Python-Iocextract:高級入侵威脅標識符IoC提取工具

2019-06-19 47819人圍觀 ,發現 1 個不明物體 工具

a.jpg

工具介紹

Python-Iocextract是一款高級入侵威脅標識符IoC提取工具,它可以從文本語料庫提取URL、IP地址、MD5/SHA哈希、電子郵件地址和YARA規則,其中還包括某些已編碼或已被“破壞”的入侵威脅標識符。

因為網絡犯罪分子為了防止暴露自己的惡意活動以及攻擊內容,通常都會想辦法“破壞”類似URL和IP地址這樣的入侵威脅標識符。在這種情況下,有效提取和匯總這些IoC對于安全分析人員來說就非常有價值了。但不幸的是,對于現有的IoC提取工具來說,標準的正則表達式往往無法捕捉到這些東西。

比如說,下面這個樣本就使用了括號來進行IoC隱藏:

127[.]0[.]0[.]1

這種情況下,基于簡單正則表達式匹配的工具就無法提取出這種IoC了。

但是對于Python-Iocextract來說,情況就不一樣了。通過使用精心設計的正則表達式以及反混淆檢測技術,我們既可以檢測到“被破壞”的IoC,也可以還原初始的IoC,為分析人員節省了時間和精力。

工具安裝

在使用Python-Iocextract之前,我們需要安裝Python開發環境以及regex依賴。在Ubuntu和Debian等Linux系統中,可以使用下列命令完成安裝:

sudo apt-get install python-dev

接下來,使用pip命令安裝iocextract:

pip install iocextract

在Windows平臺下,點擊【這里】下載regex安裝包:

pip install regex-2018.06.21-cp27-none-win_amd64.whl

工具使用

提取某些已被破壞的URL地址:

>>>content = """

... Ireally love example[.]com!

...All the bots are on hxxp://example.com/bad/url these days.

...C2: tcp://example[.]com:8989/bad

..."""

>>>import iocextract

>>>for url in iocextract.extract_urls(content):

...     print url

...

hxxp://example.com/bad/url

tcp://example[.]com:8989/bad

example[.]com

tcp://example[.]com:8989/bad

如果匹配到多個正則表達式的話,可能會有某些URL地址出現兩次。

如果有需要的話,你還可以還原IoC并移除某些常見的混淆技術:

>>>for url in iocextract.extract_urls(content, refang=True):

...     print url

...

http://example.com/bad/url

http://example.com:8989/bad

http://example.com

http://example.com:8989/bad

你甚至還可以提取并解碼十六進制編碼或Base64編碼的URL地址:

>>>content ='612062756e6368206f6620776f72647320687474703a2f2f6578616d706c652e636f6d2f70617468206d6f726520776f726473'

>>>for url in iocextract.extract_urls(content):

...     print url

...

687474703a2f2f6578616d706c652e636f6d2f70617468

>>>for url in iocextract.extract_urls(content, refang=True):

...     print url

...

http://example.com/path

該工具中所有的extract_*函數返回的都是迭代器,而不是列表。因此,iocextract可以處理大量數據輸入。但如果你想要迭代處理多次IoC,你將需要把結果存儲為列表:

>>>list(iocextract.extract_urls(content))

['hxxp://example.com/bad/url','tcp://example[.]com:8989/bad', 'example[.]com','tcp://example[.]com:8989/bad']

命令行工具還包括:

$iocextract -h

usage:iocextract [-h] [--input INPUT] [--output OUTPUT] [--extract-emails]

              [--extract-ips] [--extract-ipv4s][--extract-ipv6s]

              [--extract-urls] [--extract-yara-rules][--extract-hashes]

              [--custom-regex REGEX_FILE][--refang] [--strip-urls]

              [--wide]

 

AdvancedIndicator of Compromise (IOC) extractor. If no arguments are

specified,the default behavior is to extract all IOCs.

 

optional arguments:

  -h, --help            show this help message and exit

  --input INPUT         default: stdin

  --output OUTPUT       default: stdout

  --extract-emails

  --extract-ips

  --extract-ipv4s

  --extract-ipv6s

  --extract-urls

  --extract-yara-rules

  --extract-hashes

  --custom-regex REGEX_FILE

                        file with custom regexstrings, one per line, with one

                        capture group each

  --refang              default: no

  --strip-urls          remove possible garbage from the endof urls. default:

                        no

  --wide                preprocess input to allowwide-encoded character

                        matches. default: no

目前,該工具只支持恢復URL、電子郵件以及IPv4地址。

Python-Iocextract支持的IoC

IP地址

1、 完全支持IPv4

2、 部分支持IPv6

URL地址

1、 協議標識符:http, https, tcp,udp, ftp, sftp, ftps

2、 [.]錨點

3、 十六進制編碼URL:http, https, ftp

4、 URL編碼URL:http, https, ftp, ftps, sftp

5、 Base64編碼URL:http, https, ftp

電子郵件地址

支持部分@或at錨點

YARA規則

導入、包含和注釋

哈希

1、 MD5

2、 SHA1

3、 SHA256

4、 SHA512

針對IPv4地址,支持掃描下列混淆技術:

b.png

針對電子郵件地址,支持掃描下列混淆技術:

c.png

針對URL地址,支持掃描下列混淆技術:

d.png

項目地址

Python-Iocextract:【GitHub傳送門

* 參考來源:inquest,FB小編Alpha_h4ck編譯,轉載請注明來自FreeBuf.COM

發表評論

已有 1 條評論

取消
Loading...

特別推薦

推薦關注

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php 重庆百变王牌走势图