跳轉到主要內容
工程的博客”>
             <noscript>
              <img data-gatsby-image-ssr=

狩獵異常連接和基礎設施使用TLS證書

TLS散列的源網絡安全威脅狩獵計劃
分享這篇文章

Sophos表示,46%的惡意軟件現在使用傳輸層安全性(Transport Layer Security, TLS)隱瞞其溝通渠道。這一數字僅在去年翻了一番。惡意軟件,比如LockBit ransomware, AgentTesla Bladabini遠程訪問工具(老鼠),已經觀察到使用TLS基於powerShell的滴管,用於訪問pastebin最近檢索代碼和其他許多人。

在這個博客中,我們將介紹如何安全團隊可以攝取x509證書(在TLS握手)三角洲湖從AWS S3存儲、豐富,執行威脅狩獵技巧。

LS是事實上的標準來保護web應用程序,並形成整體信任層次結構的一部分在公鑰基礎設施(PKI)的解決方案。”class=

在最初從客戶機到服務器的連接,TLS協議執行兩階段握手,web服務器向客戶證明其身份的方式舉行的x509證書的信息。這之後,雙方達成一致的算法,然後生成對稱密鑰交換,隨後被用來傳輸加密數據。

實際上x509證書是完全獨特的,可以確定使用哈希算法(通常SHA1, SHA256和MD5)稱為指紋。哈希的性質使得他們巨大威脅指標,通常用於威脅情報源代表對象。由於信息在他們是用於密鑰材料(協議、交流、創造等),他們自己編碼但不加密的,因此,可以閱讀。

采集、存儲和分析網絡流量是一個具有挑戰性的任務。然而,降落到廉價的雲對象存儲,處理在規模與磚,隻有保持有趣的部分可以是一個有價值的工作流安全分析師和獵人的威脅。如果我們能確定可疑的連接,我們有機會創造的妥協(國際石油公司)和指標有SIEM下遊安全工具有助於防止進一步的惡意活動。

的數據集

我們使用x509收集的數據從一個網絡掃描,同時,我們將使用思科的傘前100萬名的列表SSL黑名單所產生的abuse.ch查找。

最好的地方在一個企業網絡的證書數據導線使用數據包捕獲技術。Zeek, TCPDump和Wireshark都是很好的例子。

如果你不知道網絡威脅SSLblacklist狩獵工具,它是由濫用。ch的目標檢測惡意的SSL連接。思科傘頂部1 m是地球上最受歡迎的DNS查找所看到的思科。我們將使用這個演示過濾和查詢技術。如果你或你的狩獵團隊想跟隨筆記本和數據可以導入附帶的筆記本

SSLblacklist由濫用。ch with the goal of detecting malicious SSL connections.”class=

來源:https://sslbl.abuse.ch

攝入數據集

為簡單起見,如果你是在家裏後,我們將使用三角洲湖批攝取能力的數據從一個AWS S3 bucket青銅表,完善和豐富成銀表(大獎章架構)。然而,你可以升級你的經驗在實際應用程序中使用結構化流!

我們將關注黑名單和傘文件第一,緊隨其後的是x509證書數據。

# Alexa-Top1m
rawTop1mDF = read_batch(火花,top1m_file格式=“csv”、模式= alexa_schema)

#寫青銅表
alexaTop1mBronzeWriter = create_batch_writer(=火花,火花df = rawTop1mDF模式=“覆蓋”)
alexaTop1mBronzeWriter。saveAsTable(數據庫名+“.alexaTop1m_bronze”)

#讓Top1m轉換
bronzeTop1mDF =火花。表(數據庫名+“.alexaTop1m_bronze”)
bronzeTop1mDF = bronzeTop1mDF.filter (~ bronzeTop1mDF.alexa_top_host.rlike (“localhost”).drop (“記數字”)
顯示器(bronzeTop1mDF)

#寫銀表
alexaTop1mSilverWriter = create_batch_writer(=火花,火花df = bronzeTop1mDF模式=“覆蓋”)
alexaTop1mSilverWriter。saveAsTable(數據庫名+“.alexaTop1m_silver”)

上麵的代碼片段閱讀從s3 bucket csv文件,將它直接寫入表不變的青銅,然後讀取青銅三角洲表,使得銀表轉換和寫。前100萬名的數據可以使用了!

樣本dataframe顯示結果磚網絡威脅的狩獵ETL過程。”class=
結果Dataframe

接下來,我們遵循相同的SSL黑名單數據格式

# SSLBlacklist
rawBlackListDF = read_batch(火花,blacklist_file格式=“csv”)
rawBlackListDF = rawBlackListDF.withColumnRenamed (,#寫青銅表
sslBlBronzeWriter = create_batch_writer(=火花,火花df = rawBlackListDF模式=“覆蓋”)
sslBlBronzeWriter。saveAsTable(數據庫名+“.sslBlacklist_bronze”)

#對SSLBlacklist進行轉換
bronzeBlackListDF =火花。表(數據庫名+“.sslBlackList_bronze”)
bronzeBlackListDF = bronzeBlackListDF.select(*(坳(x) .alias (“sslbl_”+ x)xbronzeBlackListDF.columns)

#寫銀表
BlackListSilverWriter = create_batch_writer(=火花,火花df = bronzeBlackListDF模式=“覆蓋”)
BlackListSilverWriter。saveAsTable(數據庫名+“.sslBlackList_silver”)

上述過程是一樣的,至於下麵的前100萬文件。變換隻是前綴所有列' sslbl_ '所以很容易識別。

生成的樣本sslblacklist dataframe磚狩獵工作流網絡威脅。”class=

結果sslblacklist dataframe
接下來我們攝取的x509證書數據使用相同的方法。這是如何dataframe照看攝入和轉換到銀表中。

與x509證書生成的數據樣本dataframe磚網絡威脅的狩獵工作流的一部分。”class=

X509證書是複雜的,有許多可用的字段。一些最有趣的我們最初的目的;

  • 主題、發行人、common_name有效與字段,dest_ip, dest_port的rdn

分析數據

尋找感興趣的證書可以在許多方麵完成。我們將開始通過尋找不同值的發行人。

的例子磚網絡威脅的狩獵的解決方案可以用來識別潛在的威脅和漏洞在TSL證書。”class=

如果你是新的pyspark,它是一個python API為Apache火花。利用上麵的搜索collect_set,countDistinct,gg,groupBy。你可以閱讀更多關於這些鏈接。

一個假設是,當證書都是暫時的,簽名或者不用於真正的目的,發行人領域往往是有限的細節。讓我們創建一個搜索查看該字段的長度。

示例搜索看著發行人字段的長度,這是網絡威脅的一部分磚使用的狩獵技術的解決方案。”class=

withColumn添加一個新列,後評估給定的表達式。

頂部入口長度最短,具有獨特的主題和發行領域。這是一個很好的候選人一些OSINT !

樣本穀歌搜索顯示TLS證書的數量被認為是用於惡意網站。”class=

穀歌搜索顯示大量的點擊率,相信這個證書或已經使用惡意網站。這個哈希是一個偉大的候選人主在我們的網絡和進一步探索。

讓我們現在使用ssl黑名單表與已知的惡意的散列。

# SSLBlacklist
isSSLBlackListedDF = silverX509DF.select (
“sslbl_Listingreason”,“common_name”,“國家”,“dest_ip”,“rdn”,“發行人”,
“sha1_fingerprint”,“not_valid_before”,“not_valid_after”

).filter (silverX509DF。sslbl_SHA1 ! =“零”)
顯示器(isSSLBlackListedDF)

示例搜索結果顯示對手的運動基礎設施隨著時間的推移,用作磚網絡威脅的狩獵方法的一部分。”class=

這個搜索提出了一些有趣的發現。四大條目顯示點擊不同的惡意軟件家庭的指揮和控製的基礎設施。我們也看到同樣的sha1指紋用於ransomware指揮和控製,使用不同的IP地址和DNS名稱。可能有很多原因,但對手的觀察將基礎設施隨著時間移動。首先看到的,最後一次看到工作必須使用威脅數據清單的完成日期和其他技術,如被動DNS查找進一步理解和獲得更多的態勢感知能力。新發現的信息也應該用於主回一個組織的其他跡象與這些通信主機或IP地址。

最後,一個巨大的狩獵技術指揮控製通信是使用香農熵計算隨機字符串。

def(字符串):
“計算一個字符串的夏儂熵”
試一試:
#字符在字符串的概率
概率=[浮動(string.count (c)) / len(字符串)cdict.fromkeys(列表(string)))

#計算熵
熵= - sum ([p * math.log (p) / math.log (2.0)p概率)
除了異常作為艾凡:
打印(e)
熵=1


返回

entropy_udf = udf(熵,StringType ())

entropyDF = silverX509DF.where(長度(坳(“主題”15).select ())
“common_name”,“主題”,“發行人”,“subject_alternative_names”,“sha1_fingerprint”
).withColumn (“entropy_score”,
entropy_udf(坳(“common_name”))).orderBy(坳(“entropy_score”).desc())其中(坳(“entropy_score”)>1.5)


顯示器(entropyDF)

生成樣本搜索結果確定潛在的惡意指紋,磚的網絡威脅的狩獵的解決方案的一部分。”class=

俗話說,“互聯網是一個糟糕的地方”和“數學是一個糟糕的情人”!初始搜索包括所有證書,產生很多噪音由於字段內容的性質。進一步試驗,我們從搜索和早些時候隻關注那些主題少於15個字符的長度,和浮出水麵隻有最高熵的數據集。所得的9個條目可以手動搜索,或進一步自動化可以應用。頂部輸入在這個場景中感興趣的是,這似乎是用作CobaltStrike開發工具包的一部分。

樣本的穀歌搜索可疑的指紋,演示磚的網絡威脅的狩獵技術可以應用於實際情況中。”class=

進一步的工作

這走過了一些技術我們可以用它來識別可疑或惡意流量使用簡單的x509證書的獨特屬性。進一步探索使用機器學習技術還可以提供好處。

結論

分析證書不同尋常的特性,或者針對已知威脅數據基礎設施可識別已知的惡意軟件。它可以作為初始軸心點收集更多的信息,可以用來尋找妥協的跡象。然而,由於證書標識主機而不是它的內容,它不能提供高信心警報。

之前申請操作化在一個安全操作中心(soc),初始指標需要進一步篩選。其他內部和外部來源的數據,比如防火牆、被動DNS,VirusTotal,是誰也應該使用從端點進程創建事件。

讓我們知道在(電子郵件保護)你認為如何處理TLS / x509數據在企業或更多的被動地在互聯網上可以用來追蹤敵人和基礎設施。如果你沒有一個磚的客戶,隨時旋轉了community edition。

下載的筆記本。

免費試著磚

相關的帖子

看到所有工程的博客的帖子