為威脅情報和機器學習研究收集和策劃IOC白名單

來源:http://www.covert.io/

在這篇文章中,我分享了我為威脅情報和機器學習研究建立和維護大量良性的IOCs(白名單)的經驗。

白名單在威脅情報關聯中是一個有用的概念,因為它可以很容易地讓良性觀察進入威脅情報指示源,特別是來自開源供應商或供應商,他們不應該那么小心。如果這些威脅情報源被用于阻塞(例如,在防火墻或WAF設備中)或警報(例如,在SIEM或IDS中的日志關聯),良性條目進入安全控制的成本將非常高(浪費分析時間來篩選假陽性警報,或為被阻塞的合法網站損失業務生產力)。白名單通常用于過濾威脅情報源中的可觀察信息,如果它們與事件日志(例如,bluecoat代理日志、防火墻日志等)相交,則幾乎肯定會被標記為假陽性,并用于警報。白名單對于構建機器學習模型和豐富上下文信息所需的標記數據集也非常有用。

良性觀察的典型例子是8.8.8.8(谷歌發布的開放DNS解析器)。這已經在許多開源和商業威脅情報中錯誤地找到了它的方式,因為有時惡意軟件使用這個IP來進行DNS解析,或者他們ping它來進行連接檢查。由于威脅feed的派生/收集方式不同,通常會有許多其他可觀察對象進入威脅feed。以下是威脅情報反饋中誤報的主要來源的總結,以及識別這些來源以防止其使用的方法。如今,大多數商業威脅情報平臺都很擅長識別這些信息,而占主導地位的開源威脅情報平臺MISP在其警告列表方面也做得越來越好,但正如你將在下面的文章中發現的那樣,還有一些改進的空間。

一、良性入站觀測值

從分布式網絡傳感器(如蜜罐或防火墻日志)獲得的威脅情報饋源中,通常會出現良性的入站觀測數據。這些ip出現在防火墻日志中,通常是良性的,或者最多被認為是噪音。下面是幾種常見的良性入站可觀察類型。每一種類型都有推薦的數據源或收集技術,列在子項目中:

(1)已知的網絡爬蟲:網絡爬蟲是服務器爬行的萬維網和通過這個過程可能進入許多公司的網絡或可能意外地擊中蜜罐或防火墻。

一旦確定了模式,可以使用RDNS + DNS分析批量枚舉這些模式。下面是googlebots的一個示例模式。挖掘大量rdns數據集合可以揭示需要關注的其他模式。下面是一個例子,一個簡單的PTR查找已知的googlebot IP。這將開始揭示可以編纂的模式,假設您可以訪問像這里提供的(或者可以輕松生成)的大量RDNS數據。


(2)與高可見項目或安全公司(Shodan, Censys, Rapid7項目Sonar, ShadowServer等)相關的已知端口掃描器。

RDNS + DNS分析可以批量枚舉這些(假設供應商希望被識別)。例子:

(3)郵件服務器——這些服務器發送電子郵件,有時會錯誤地被表示為威脅信息。

為了列舉這些,你需要一個流行的電子郵件域名列表。然后對該列表執行DNS TXT請求并解析SPF記錄。可能需要多次查找,因為SPF允許重定向和包含。下面的示例顯示了對gmail.com手動執行此操作所需的命令。返回的CIDR塊是發送gmail電子郵件的IP空間。警告或封鎖這些會導致糟糕的一天。

(4)云PaaS提供商——大多數云提供商通過api或文檔發布他們的IP空間。這些列表對于派生白名單很有用,但是需要進一步過濾。理想情況下,只白名單大量共享的云IP空間(如S3、CLOUDFRONT等),而不是容易被壞人使用的IP空間,如EC2s。這些白名單不應用于排除解析到此IP空間的域名,而應用于警報的豐富或從這些IP范圍禁用基于IOC的警報

亞馬遜AWS IP范圍:https://ip-ranges.amazonaws.com/ip-ranges.json

谷歌云平臺IP范圍:https://gist.github.com/n0531m/f3714f6ad6ef738a3b0a

Azure IP范圍:https://www.microsoft.com/en-us/download/details.aspx?id=56519

注:Greynoise是“反威脅”情報的商業提供商(也就是說,他們可以識別噪音和其他良性觀察對象)。他們非常擅長識別上面列出的良性觀測的類型,因為他們維護一個全球分布的傳感器陣列,并且專門分析網絡事件以識別良性活動。

注意:misp -warning列表現在提供了許多這樣的項目,但是它們可能已經過時了(它們的一些列表已經幾個月沒有更新了)。理想情況下,所有這些列表都是通過從權威來源自動收集而不是存儲在github中的硬編碼數據來保持最新的(除非這些數據經常自動更新)。更多提示請參見“建立/維護白名單數據”一節。

二、良性的出站可見

良性的出站觀察經常出現在來自惡意軟件沙箱、URL沙箱、出站web爬蟲、電子郵件沙箱和其他類似的威脅信息中。下面是幾種常見的良性出站可觀察類型。每一種類型都有推薦的數據源或收集技術,列在子項目中:

1、流行域名-流行域名可以結束威脅情報來源,特別是那些來自惡意軟件沙箱,因為通常情況下,惡意軟件使用良性域名作為連接檢查和一些惡意軟件,如那些執行點擊欺詐行為更像網絡爬蟲,訪問許多不同的良性網站。這些流行的域名經常出現在大多數公司網絡中,而且本質上幾乎都是良性的(注意:它們可以被破壞并用于托管惡意內容,所以在這里需要非常小心)。

下面是一些流行域名的數據源。它們在衡量受歡迎程度的方式上略有不同(通過Web訪問者的數量、Web爬行數據出現的頻率、基于DNS查詢的數量或組合)。這些列表不應該原樣用于白名單;它們需要被過濾/精煉。請參閱下面的“構建/維護白名單數據”一節,了解關于優化建議的更多細節。

Amazon Alexa top 1 Million

Cisco Umbrella Top 1 Million

Domcop Top 10m Domains(data) - The top 10 million websites taken from the Open PageRank Initiative.

Majestic Million Domains

Moz’s list of the most popular 500 websites on the internet

Quantcast Top 1 Million

Tranco: A Research-Oriented Top Sites Ranking Hardened Against Manipulation

MISP-warninglists’dax30 websites,bank websites,university domains,url shorteners,whats-my-ip sites

2、流行IP地址-流行IP與流行域名非常相似。它們無處不在,當它們放到威脅情報feed時,它們會造成大量的誤報。流行IP列表可以通過解析流行域名列表生成。這些列表不應該原樣用于白名單;它們需要被過濾/精煉。請參閱下面的“構建/維護白名單數據”一節,了解關于優化建議的更多細節。

3、免費的電子郵件域-免費的電子郵件域偶爾會意外地出現在威脅情報feed,所以它是好的保持一個良好的列表,以防止誤報。Hubspot提供了一份不錯的清單。https://knowledge.hubspot.com/forms/what-domains-are-blocked-when-using-the-forms-email-domains-to-block-feature

4、廣告服務器——廣告服務器經常出現在URL沙箱feed中,因為這些feed通常是通過訪問許多網站并等待惡意攻擊或反病毒警報來獲得的。這些相同的服務器總是出現在良好的互聯網流量中。Easylist提供了這類數據。https://easylist.to/

5、CDN IPs -內容分發網絡地理上分布式的緩存代理服務器或網絡提供高可用性和高性能web內容分布。它們的服務器被大量共享以分發各種web內容。當來自CDNs的ip轉化為威脅情報時,假陽性很快就會出現。下面是幾個CDN IP和域源。

WPO-Foundation CDN list (embedded in Python code)

AWS IP Ranges- but filtered for cloudfront and S3 IP space.

Cloudflare IP Ranges

Fastly IP Ranges

MaxCDN IP Ranges

與識別已知的web爬蟲非常相似,一旦識別出模式,可以使用DNS PTR-Lookup + DNS A-Lookup 分析批量枚舉這些爬蟲。

6、證書撤銷列表(CRL)和在線證書狀態協議(OCSP)域/ url——當在惡意軟件沙箱中執行二進制文件并且可執行文件已經簽名時,將連接到CRL和OCSP服務器。正因為如此,這些經常錯誤地放入到威脅feed。

抓取證書從Alexa頂級網站,提取OCSP URL。這個老的Alienvault 帖子描述了這個過程(以及另一種使用現已不存在的EFF SSL天文臺的方法),而這個github 存儲地提供了實現這個過程的代碼。在此應注意,因為對手可以影響以這種方式收集的數據。

MISP-warninglists’ crl-ip-hostname

7、NTP服務器——一些惡意軟件調用NTP服務器進行連接檢查或確定真實的日期/時間。正因為如此,NTP服務器經常會錯誤地獲取來自惡意軟件沙箱的威脅情報。

Web抓取NTP服務器列表(如NIST Internet Time服務器和NTP Pool Project服務器),并執行DNS解析來導出每個區域負載均衡器背后的所有服務器。

8、根名稱服務器和TLD名稱服務器

對公共后綴列表中的每個域執行DNS NS-lookup,然后執行DNS A-lookup每個名稱服務器域以獲得它們的IP地址。

9、郵件交換服務器

獲取流行電子郵件域的列表,然后對流行電子郵件域執行MX查找,以獲得它們各自的郵件交換(MX)服務器。對MX服務器列表執行DNS A-lookup以獲得它們的IP地址。

10、NAT會話遍歷工具(STUN)是一組標準化的方法,包括一個網絡協議,用于在實時語音、視頻、消息傳遞和其他交互通信應用中遍歷網絡地址轉換器(NAT)網關。“通過https://en.wikipedia.org/wiki/STUN。下面是一些STUN服務器的來源(其中一些看起來很舊)。

https://www.voip-info.org/stun//

https://gist.github.com/mondain/b0ec1cf5f60ae726202e

https://gist.github.com/zziuni/3741933

http://enumer.org/public-stun.txt

11、停車IPs - IPs作為 DNS-A的默認IP記錄,用于新注冊的域名。

maltrails parking_sites

12、流行的開放DNS解析器

公共遞歸名稱服務器 (Wikipedia)——列出了最大和最流行的開放遞歸名稱服務器。

公共DNS服務器列表(Public DNS Server List)——維護一個公開的遞歸名稱服務器的大列表,可能對上下文有用,但不應該被白名單

13、安全公司、安全博客和安全工具網站——這些網站經常出現在威脅郵件列表中,這些郵件列表有時會被當作威脅源而被錯誤地標記為惡意。

刮掉所有與awesome-*安全相關的著名github存儲點。這有點冒險,因為對手可能會將他們的域名添加到這些列表中。例子:

awesome-security

awesome-malware-analysis

awesome-honeypots

MISP-warninglists提供了一個看起來很不錯的安全提供這博客帖子(https://github.com/MISP/misp-warninglists/tree/master/lists/security-provider-blogpost)和自動惡意軟件分析列表(https://github.com/MISP/misp-warninglists/tree/master/lists/automated-malware-analysis)。

14、Bit Torrent Trackers-github.com/ngosang/trackerslist

15、跟蹤域名-常用的著名的電子郵件營銷公司。在威脅情報源經常出現在來自垃圾郵件或釣魚郵件sinkhole。在實踐中導致了高假陽性率。

PDNS和/或域Whois分析是識別這些可觀察到的模式的一種方法。下面是一個例子使用Whois數據為Marketo.com和確定所有其他Marketo電子郵件跟蹤域使用Marketo的域名服務器。這個例子來自Whoisology,但批量Whois挖掘是首選方法。

注意:mis- warning列表現在提供了其中的一些項目,但是它們可能已經過時了。理想情況下,通過從權威來源自動收集,所有這些列表都是最新的。更多提示請參見“建立/維護白名單數據”一節。

三、良性的基于主機的可見指標

善意的基于主機的可觀察性指標在基于惡意軟件沙箱的威脅情報源中非常常見。下面是一些可觀察類型的示例。到目前為止,我只發現了一些不錯的哈希列表(見下面)。

File hashes

Mutexes

Registry Keys

File Paths

Service names

數據來源:

NSRL hashset

Windows-7/32 Diskprint

Neo23x0 / fp-hashes.py

MISP常見的IOC假陽性

曼迪昂特紅線白名單(鏡像)-注意:這在我寫這篇博客的時候已經5歲了。

Hashsets.com(商業)哈希列表

在有關惡意軟件檢測的領先學術和行業研究中,通常使用Virustotal來構建帶標簽的訓練數據。更多細節請看這篇文章。這些技術似乎非常適合用于訓練數據創建,但不推薦用于操作使用的白名單,因為錯誤否定的可能性很高。

注意:如果你的目標是在二進制文件上建立一個機器學習模型,你應該考慮Endgame的Ember。“數據集包括從1.1M二進制文件中提取的特征:900K訓練樣本(300K惡意,300K良性,300K未標記)和200K測試樣本(100K惡意,100K良性)”。看到Ember:一個開放的數據集訓練靜態PE惡意軟件的機器學習模型更多的細節。

四、白名單排除

有許多可觀察到的東西,由于它們的受歡迎程度和重要性,我們永遠不會想把它們列入白名單。這些應該在一個白名單排除列表(又稱灰名單)中維護。下面是一些例子:

共享主機域名和動態DNS域名-這些基本域名不應該被警告,因為許多在Alexa的前100萬名單,將令人難以置信的噪音。這些子域很容易引起警覺,因為它們很容易被對手控制和濫用。下面是這些信息的一些來源,但是找出主要的供應商并抓取他們的網站或api將是保持這些信息新鮮的更好方法。

Shared Hosting-Maltrails free web hosting

Dynamic DNS-Maltrails DynDNS

DNS Sinkhole IPs

https://tisiphone.net/2017/05/16/consolidated-malware-sinkhole-list/

github.com/brakmic/Sinkholes

sinkdb.abuse.ch

MISP warninglists sinkholes

五、建立/維護白名單數據

為了可維護,白名單的生成需要自動化。對于希望確保總是在白名單中的內容,這條規則可能有例外,但對于其他內容,理想情況下它們是從權威來源收集的,或者是基于可靠的分析技術生成的。您不能總是盲目地信任上面列出的每個數據源。對于某些情況,需要一些自動驗證、過濾或分析。下面是一些有效的方法。

1、白名單中的每個實體都應該被分類(這是什么類型的白名單條目?)和來源(這是從哪里來的?)以便我們確切地知道它是如何到達那里的(即什么數據源負責),以及它是什么時候被添加/更新的。如果存在與白名單相關的問題,這將有助于解決問題的特定來源。

2、從原始源站點檢索白名單條目,并從那里解析/提取數據。盡可能避免一次轉儲白名單條目,因為它們很快就會過時。如果包含一次性轉儲,請確保保持它們的沿襲。

3、一些大容量數據集對于分析擴展或篩選各種白名單非常有用。

(1)批量活動DNS解析(A-lookups, MX-lookups, NS-lookups,和 TXT-lookups)。Adns在這方面可能很有用。

(2)批量RDNS數據(從scans.io獲取或自己收集)。

(3)批量Whois數據-這可以從幾個供應商購買。這里有一些:whoisxmlapi.com, iqwhois.com, jsonwhois.com, whoisdatabasedownload.com,和research.domaintools.com。

(4)被動DNS (PDNS)數據可以從幾個供應商購買,或者你可以使用自己的網絡來收集和存儲這些數據。以下是一些PDNS的供應商:farsightsecurity.com, deteque.com, circl.lu, riskiq.com, passivednsmnemonic.no和coresecurity.com(原Damballa)。

4、Netblock所有權(Maxmind)查找/分析對于一些審查非常有用。

5、白名單應該至少每天更新以保持新鮮。可能會有一些數據源比這更改得更頻繁或更少。

在刷新白名單時要小心。添加健全檢查,以確保在替換舊白名單之前正確地生成了新白名單。白名單加載失敗的代價將是大量的誤報(不幸的是,我不得不以痛苦的方式吸取這個教訓……)。

6、流行域名列表不能從表面上看是良性的。惡意域名總是會進入這些列表。這里有一些解決方法:

7、使用n天穩定top- x技術。例如,穩定6個月Alexa top 500k -創建一個衍生列表從頂級Alexa域名,你過濾的名單,只有域名已經在Alexa top 500k名單,在過去6個月每天。在惡意域檢測文獻中,常用該技術構建高質量的良性標記數據。它并不完美,可能需要根據白名單的使用情況進行調整。這種技術需要保存歷史上流行的域名列表。Wayback機器似乎擁有Alexa top1m數據的巨大歷史鏡像,可能適合引導自己的收藏。

8、這些列表的批量DNS解析對于生成流行的IP列表也很有用,但只有在使用n天穩定的top-X概念或在如何使用它們時才有用。

9、使用白名單排除設置,以刪除類別的域名/ ip,你永遠不想白名單。白名單排除集也應通過權威來源的自動收集保持新鮮(例如,在可能的情況下,抓取動態DNS提供商和共享托管網站,PDNS / Whois分析也可以工作)。

10、最后,在生成白名單時要小心,并考慮數據的哪些方面是被對手控制的。我們需要小心,不要盲目相信這些事情。一些例子:

RDNS條目可能具有欺騙性,特別是當對手知道它們用于白名單時。例如,對手可以為他們擁有的IP地址空間創建PTR記錄,與谷歌的googlebot RDNS或Shodan的census RDNS相同,但他們不能更改DNS記錄,將該域名映射回他們的IP空間。對于這些,通常還需要正向查找或netblock所有權驗證。

總之,白名單對于在與事件數據關聯之前從威脅情報列表中過濾出可觀察的信息,為機器學習模型構建標記數據集,以及用上下文信息豐富威脅情報或警報非常有用。創建和維護這些列表需要大量的工作。要非常小心,不要走得太遠,或者白名單域或ip很容易被對手控制。



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。