當前位置:
首頁 > 新聞 > Harpoon:一款實用威脅情報工具

Harpoon:一款實用威脅情報工具

Harpoon是一種自動化威脅情報和開源情報任務的工具。它是用Python 3編寫的,並以插件的形式組織,所以它的思路是每個平台或任務都有一個插件。代碼在Github上,你可以隨意地打開問題並提出請求。

安裝和配置:

然後檢查如何使用每一個帶有harpoon help MODULE 的模塊

Harpoon ?

在過去的一年半里,我一直致力於研究威脅情報和開源情報在一些惡意軟體上的運作。威脅情報一方面主要依賴於Passive DNS/惡意軟體資料庫,另一方面依賴於資料庫的惡意活動。它的目的是映射出攻擊者的基礎設施結構,如果可能的話將其與其他的惡意活動聯繫起來。一些威脅情報平台是人人都可以訪問的(例如 OTX 或者 RobTex),也有一些是商業化的或者不允許免費訪問的(例如 VirusTotal 或者 PassiveTotal)。該活動的很大一部分是在不同的平台上尋找信息。許多人試圖創建一個平台,集中管理來自其他平台的信息,但在研究過程中,總是會有另一個平台需要考慮。

新的標準問題完全適用於威脅情報(xkcd 927)

另一方面,開源情報(又稱OSINT)則是更加多樣化。它的目的是儘可能多地獲取關於某人或一群人使用任何可在網上公開訪問的數據來源的信息。當然也有一些有趣的平台(比如SpyOnWeb),但是你也需要在社交媒體,緩存平台和其他一些隨機的任務中進行研究,這取決於你的調查方向。

總之,大量的任務都是手工完成的,體驗很糟糕。起初,我試圖創建隨機python腳本來讓一些任務變的自動化,但很快就變得一團糟: 太多的腳本,有的在python2 有的在python3,有的使用配置文件,有的在參數中獲得API密鑰…一段時間之後,我開始將這些腳本整理為一個叫做Harpoon工具的模塊,並且經過幾個月的使用之後,我認為是時候開放源代碼,看看它能否幫助別人。

關於該工具的一些原則的注釋:

·Python 3是唯一可以使用的,Python 2已經不再使用, 我甚至不打算再支持它

·許多OSINT工具試圖從一個指示符(域或電子郵件)中收集儘可能多的信息,而不關心它來自何處。Harpoon不會遵循這種邏輯。它主要允許在每個指令中實現單個任務(使用多個工具來實現幾個更通用的指令) 我認為在一項調查中,了解信息的來源和可靠性是非常重要的。

·在很多情況下,我還想探究API以了解使用它們可能實現的東西,最終我還是重寫了一些資料庫(比如SpyOnWeb),因為我想知道它到底做了什麼以及如何做。所以我重複使用了很多次,最終對它們很滿意。

·Harpoon被組織成易於實現的子命令,這些命令依賴於內部或外部的資料庫。這些命令還使用一個單獨的配置文件,當需要一個API key時,您需要手動完成這個配置文件。

·這個工具並完美,它只完成我們需要自動化完成的事情,目前它可能存在問題,並且有許多未來我想要實現的操作(但這也可能永遠不會發生)。你可以隨意地打開問題並提出請求

這篇文章可能會無聊,主要是因為我試圖儘可能詳盡地完成關於該工具的有限制的文檔。你可以隨意跳轉到你感興趣的部分。

安裝

TL;DR:

無聊但是必須要做的部分:如何安裝Harpoon。我試著通過pip(在@cybersteez的巨大幫助下)儘可能地將它打包,這樣所有的東西都會通過pip install git+ssh://git@github.com/Te-k/harpoon –process-dependency-links是安裝好的狀態。

打包的主要挑戰是,我編寫的許多資料庫都是在github上託管的,而不是在Pypi中,所以打包時應該同時安裝它們。或者,在你克隆完資料庫(pip install -r requirements.txt)之後,你可以安裝來自requirements.txt的所有東西。

如果你想使用截圖模塊(獲取一個網站的截屏),你還需要通過npm : npm install -g phantomjs來安裝。

現在Harpoon應該被安裝了,你可以拿harpoon help ip為例來驗證它是否能正常工作。然後,您需要安裝Harpoon需要的文件並配置它。要安裝所需的文件(目前主要是MaxMind GeoIP資料庫),只需要運行harpoon config -u 並等待。最後配置該工具,主要是通過提供您可以使用或想要使用的平台的API 密鑰。要做這一步,只需要運行 harpoon config,它將複製空的配置文件並使用vim打開它,這樣就可以使用給定的API密鑰了。如果沒有API密鑰,只需要讓API密鑰空著就行,Harpoon會在可能的時候避免使用這個平台。在我當前的系統上,可以看到用 harpoon config -c配置好的模塊的列表,如下:

Configuration check:

-hibp -> OK

-twitter -> OK

-misp -> FAILED

-robtex -> OK

-totalhash -> OK

-pt -> OK

-asn -> OK

-otx -> OK

-bitly -> OK

-vt -> OK

-screenshot -> OK

-dns -> OK

-safebrowsing -> OK

-threatgrid -> OK

-help -> OK

-shodan -> OK

-greynoise -> OK

-crtsh -> OK

-domain -> OK

-pgp -> OK

-github -> OK

-malshare -> OK

-config -> OK

-hunter -> OK

-hybrid -> OK

-cache -> OK

-spyonweb -> OK

-telegram -> FAILED

-fullcontact -> OK

-ip -> OK

-censys -> OK

-googl -> OK

所有Harpoon需要的文件(包括配置文件)都被安裝在~/.config/harpoon。

特性

在不列出模塊的情況下來描述這些特性是很困難的,因為我幾乎為每一個需要自動化的任務創建了一個新的命令。讓我們用例子來組織分類:

·威脅情報平台 : Virus Total, Passive Total, Hybrid Analysis, AlienVault OTX, Shodan, Censys, RobTex, ThreatGrid, GreyNoise, TotalHash, MISP, MalShare:

$ harpoon otx -s cdnverify.net

No analysis on this fileListed in 1 pulses-Sofacy targeting Romanian Embassy

Sofacy targeting the embassy of Romania in Moscow - Email Subject: Upcoming Defense events February 2018

Created: 2018-02-08T11:50:07.652000

References: https://twitter.com/ClearskySec/status/960924755355369472

id: 5a7c396f6db26d7636273c44

URL list:

[2018-02-06T19:12:50] https://cdnverify.net/ on IP 151.80.74.167

[2018-02-02T18:44:09] http://cdnverify.net/ on IP 151.80.74.167

·除此之外,我還執行了一些更高級別的命令,用於從所有這些平台上收集ip和域的信息。這些命令從幾乎所有配置的插件中搜索有趣的信息:

$ harpoon domain intel cdnverify.net###################### cdnverify.net ###################[+] Downloading OTX information....[+] Downloading Robtex information....[+] Downloading Passive Total information....[+] Downloading VT information....----------------- Intelligence Report

OTX: -Sofacy targeting Romanian Embassy (2018-02-08 - https://otx.alienvault.com/pulse/5a7c396f6db26d7636273c44)

PT: Nothing found!----------------- Malware

[PT (Emerging Threats (Proofpoint))] 36524c90ca1fac2102e7653dfadb31b2 2018-02-04----------------- Urls

[VT] http://cdnverify.net/ - 2018-02-15[VT] https://cdnverify.net/ - 2018-02-09[OTX] https://cdnverify.net/ - 151.80.74.167 2018-02-06[OTX] http://cdnverify.net/ - 151.80.74.167 2018-02-02----------------- Passive DNS

[+] 151.80.74.167 (2018-02-07 -> 2018-02-07)(PT)

[+] 151.80.74.167 (2018-02-04 -> 2018-02-04)(VT)

[+] 151.80.74.167 (2018-02-02 -> 2018-02-06)(Robtex)

[+] 208.91.197.91 (2018-01-31 -> 2018-01-31)(PT)

·網路信息:命令ip、dns和asn提供關於ip、域名或ASN號(位置、dns解析度或ASN的信息)的基本信息。沒什麼特別的,但它一直在起作用:

$ harpoon ip info 151.80.74.167MaxMind: Located in Roubaix, France

MaxMind: ASN16276, OVH SAS

ASN 16276 - OVH, FR (range 151.80.0.0/16)

Censys:https://censys.io/ipv4/151.80.74.167Shodan:https://www.shodan.io/host/151.80.74.167IP Info://ipinfo.io/151.80.74.167BGP HE:https://bgp.he.net/ip/151.80.74.167IP Location:https://www.iplocation.net/?query=151.80.74.167

·社交媒體:當在社交媒體平台上進行研究時(我不確定API是否是最好的方法),我發現在調查過程中(比如在Twitter刪除Russian trolls之前),從一個社交媒體賬戶中快速保存所有的東西是非常有用的。同樣的想法,也可以用截圖命令來獲取一個網站的截圖。目前,存在的只有Twitter和Telegram:

$ harpoon twitter -s realDonaldTrump > @realDonaldTrump

·URL 網址縮略:我還實現了bit.ly and goo.gl 網址縮略的指令,這個想法是為了儘可能多的從API獲取信息:

$ harpoon bitly -H 2oh6Nrj

-------------------- Bit.ly Link infos -------------------

# INFO

Link: http://bit.ly/2oh6Nrj Metrics: http://bit.ly/2oh6Nrj+

Expanded url: https://ooni.torproject.org/post/mining-ooni-data/

Creation Date: 2018-02-19 00:15:03

Aggregate link: http://bit.ly/2E6V2dF

2 bitly redirect to this url

# LINK INFO

original_url: https://ooni.torproject.org/post/mining-ooni-data/

canonical_url: https://ooni.torproject.org/post/mining-ooni-data/

html_title: OONI - I have hands, how can I mine OONI data?

aggregate_link: http://bit.ly/2E6V2dF

indexed: 1519017306

# USERS

User: 2oh6Nrj

Invalid user!

# CLICKS

0 clicks on this link

# COUNTRIES

# REFERRERS

·然後,我還實現了其他一些命令,因為我想看看都能從某些API獲取些什麼。例如,有個github 的指令可以在github repos中搜索,或者是pgp用來搜索API 密鑰。我特別喜歡的一個命令是緩存命令,它可以檢查一個網頁在不同緩存平台上的存在。

$ harpoon cache https://citizenlab.ca/2016/11/parliament-keyboy/

Google: FOUND

https://webcache.googleusercontent.com/search?q=cache%3Ahttps%3A%2F%2Fcitizenlab.ca%2F2016%2F11%2Fparliament-keyboy%2F&strip=0&num=1&vwsrc=1 (2018-02-05 20:02:18+00:00)

Yandex: FOUND

https://hghltd.yandex.net/yandbtm?fmode=inject&url=https%3A%2F%2Fcitizenlab.ca%2F2016%2F11%2Fparliament-keyboy%2F&tld=ru&lang=en&la=1518660992&tm=1519019381&text=https%3A%2F%2Fcitizenlab.ca%2F2016%2F11%2Fparliament-keyboy%2F&l10n=ru&mime=html&sign=ef543d285bc848b89e51b5a654f7f6aa&keyno=0

Archive.is: NOT FOUND

Archive.org: FOUND

-2018-02-03 10:05:03: http://web.archive.org/web/20180203100503/https://citizenlab.ca/2016/11/parliament-keyboy/

Bing: FOUND http://cc.bingj.com/cache.aspx?d=5023416941477933&w=p_fS69zzGSfsYoCCryqQAHXJ09tpPdBB (2016-11-17 00:00:00)

·最後並且很重要的,幫助命令(希望)提供關於任何命令的詳細信息:

$ harpoon help ip

# IP

Gathers information on an IP address

Get information on an IP:

harpoon ip info 172.34.127.2

MaxMind: Located in None, United States

MaxMind: ASN21928, T-Mobile USA, Inc.

ASN 21928 - T-MOBILE-AS21928 - T-Mobile USA, Inc., US (range 172.32.0.0/11)

Censys: https://censys.io/ipv4/172.34.127.2

Shodan: https://www.shodan.io/host/172.34.127.2

IP Info: //ipinfo.io/172.34.127.2

BGP HE: https://bgp.he.net/ip/172.34.127.2

IP Location: https://www.iplocation.net/?query=172.34.127.2

* Get intelligence information on an IP: harpoon ip intel IP

Harpoon工具

$ cat ips | ipinfo

66.249.66.6 ; ASN15169 ; Google LLC ; Mountain View ; United States

184.105.139.116 ; ASN6939 ; Hurricane Electric, Inc. ; Fremont ; United States

184.105.247.206 ; ASN6939 ; Hurricane Electric, Inc. ; Salt Lake City ; United States

舉例

其實要舉一個Harpoon真實的例子是很難的,因為它對不同類型的研究都有幫助,但是我們來試試最近的Palo Alto關於Quasar RAT的報告,並且集中於域名akamaicdn[.]ru.

首先讓我們看看實際的DNS解析是什麼:

$ harpoon dns akamaicdn[.]ru

# A

No A entry

# AAAA

No AAAA entry configured

# NS

ns2.reg.ru. - 176.99.13.12 - ASN197695 Domain names registrar REG.RU, Ltd - None Russia

ns1.reg.ru. - 176.99.13.15 - ASN197695 Domain names registrar REG.RU, Ltd - None Russia

# MX:

No MX entry configured

# SOA

NS: ns1.reg.ru.

Owner: hostmaster.ns1@reg.ru

# TXT:

No TXT entry configured

沒有任何條目,我猜操作停止了。 我們來看看是否能用robtex獲取更舊的IP:

$ harpoon robtex domain akamaicdn.ru

Passive DNS info:

[+] A194.85.61.76(2017-03-16T14:55:12 -> 2017-03-16T14:55:12)

[+] NSns1.expired.r01.ru(2017-03-16T14:55:12 -> 2017-03-16T14:55:12)

[+] A109.70.26.37(2017-03-16T14:55:12 -> 2017-03-16T14:55:12)

[+] NSns2.expired.r01.ru(2017-03-16T14:55:12 -> 2017-03-16T14:55:12)

[+] MXnomail.nic.ru(2017-03-16T14:55:12 -> 2017-03-16T14:55:12)

檢查這些IP的詳細地址:

$ ipinfo 194.85.61.76 109.70.26.37

194.85.61.76 ; ASN48287 ; Jsc ru-center ; Moscow ; Russia

109.70.26.37 ; ASN48287 ; Jsc ru-center ; None ; Russia

檢查是否用crt.sh為該域名創建了證書:

$ harpoon crtsh -d akamaicdn.ru

Certificates

sni11878.cloudflaressl.com 2017-03-02T00:00:00+00:00 2017-09-03T23:59:59+00:00 B05CB0F1425FBFA7E9407C777C6B4DC0E3F7F1B6

sni11878.cloudflaressl.com 2017-02-21T00:00:00+00:00 2017-08-06T23:59:59+00:00 7B9F1F8A2F7211C332C60EBFDB6CF739DF7D2A3A

sni11878.cloudflaressl.com 2017-01-22T00:00:00+00:00 2017-07-30T23:59:59+00:00 D372B140802DA627BD0745B447A9E3A48B2FBD15

sni11878.cloudflaressl.com 2017-01-19T00:00:00+00:00 2017-07-23T23:59:59+00:00 3868C466BC8D131B2EB6B65CD7B20E7FFB255C51

sni11878.cloudflaressl.com 2016-12-05T00:00:00+00:00 2017-06-04T23:59:59+00:00 BBEBA7914A4287C8BDDCD81510A327D33E6476F5

sni11878.cloudflaressl.com 2016-12-05T00:00:00+00:00 2017-06-04T23:59:59+00:00 F0F0A0D02A8E16B3A261382D75B8C96393A16264

sni11878.cloudflaressl.com 2016-11-27T00:00:00+00:00 2017-06-04T23:59:59+00:00 E285191C82EA0F5FD23EF4688A62E5772F4584D4

sni11878.cloudflaressl.com 2016-11-23T00:00:00+00:00 2017-05-28T23:59:59+00:00 7F40B0D369700BFC27C2AD2EB858D8DF4955624D

sni11878.cloudflaressl.com 2016-11-21T00:00:00+00:00 2017-05-28T23:59:59+00:00 EDE5454F23BBC7BFBA17F2E293D7FBDD1266B260

sni11878.cloudflaressl.com 2016-10-23T00:00:00+00:00 2017-04-30T23:59:59+00:00 68D504FAEB6AF1DDA50062B16CBFB46AAD490171

sni11878.cloudflaressl.com 2016-10-23T00:00:00+00:00 2017-04-30T23:59:59+00:00 2F2231766F8432343B579DB21ECF829CB171E481

sni11878.cloudflaressl.com 2016-10-23T00:00:00+00:00 2017-04-30T23:59:59+00:00 B11FCBEAD0A2D174C661D8095A0693955FC62A99

sni11878.cloudflaressl.com 2016-09-12T00:00:00+00:00 2017-03-19T23:59:59+00:00 62578BABE0AFFE15ABE3FBD68A6EE8EF76AB556A

sni11878.cloudflaressl.com 2016-05-18T00:00:00+00:00 2016-11-20T23:59:59+00:00 5630B82083D14B0D5202FEAC7566971ECA41BBDC

sni11878.cloudflaressl.com 2016-05-18T00:00:00+00:00 2016-11-20T23:59:59+00:00 D5A7B4CC6DF2340E8F547E3CC0A17163A81FD51A

sni11878.cloudflaressl.com 2016-05-06T00:00:00+00:00 2016-11-06T23:59:59+00:00 500DA087F038AEB5A37D9F60638332DBA8368BA2

sni11878.cloudflaressl.com 2016-05-06T00:00:00+00:00 2016-11-06T23:59:59+00:00 C54AEC0DA67F1B12A134C6B997EE93DFA0EEE4F2

sni11878.cloudflaressl.com 2016-04-11T00:00:00+00:00 2016-10-16T23:59:59+00:00 E746CD3581198237D3D26F8A80FF71BAD88D1544

sni11878.cloudflaressl.com 2016-02-18T00:00:00+00:00 2016-08-21T23:59:59+00:00 451608653F741F079CC52569F7FAFB8C5B1F8855

顯然,他們使用Cloudfare來託管該域名。由於Robtex的限制,我們可能對passive DNS信息有部分看法,但是我們先檢查OTX是否知曉IP地址194.85.61.76的所有信息:

$ harpoon otx -s 194.85.61.76

No analysis on this file

Listed in 5 pulses

-BadRabbit-Ransomware - A Modified Version of NotPetya

Created: 2017-11-03T17:58:14.502000

References:

id: 59fcae36f0c4a216de3560ea

-Blueliv Chasing cybercrime: Vawtrak v2 IOCs

Vawtrak is a serious threat for the finance sector and is predicted to be the next major banking Trojan. Blueliv"s investigation into Vawtrak v2 has revealed new information to piece together a more complete view of the Vawtrak banking Trojan and the cybercriminal groups behind it than we"ve seen before. The report also provides real infection data and Indicators of Compromise (IoCs) that readers can input into their existing security solutions to enhance their protection. Here is the full list of Vawtrak and Moskalvzapoe IOCs discovered as part of the Blueliv analysis.

Created: 2016-09-12T17:36:18.734000

References: https://community.blueliv.com/#/s/57d6d33d82df41127d7a6ca4, https://www.sophos.com/en-us/medialibrary/PDFs/technical%20papers/sophos-vawtrak-v2-sahin-wyke.pdf?la=en

id: 57d6e794aa954c115b68a85f

-Ursnif CnC

Created: 2016-02-17T00:35:04.809000

References:

id: 56c3c03867db8c12501745c6

-Angler EK Network IOC

Angler EK Network IOC observed in the past year.

Created: 2016-02-17T15:25:35.814000

References:

id: 56c490f067db8c1250175b9d

-Chinese Government Website Compromised, Leads to Angler

Despite a recent takedown targeting the Angler Exploit Kit (EK), it"s back to business as usual for kit operators. On 30-October-2015, ThreatLabZ noticed a compromised Chinese government website that led to the Angler Exploit Kit with an end payload of Cryptowall 3.0. This compromise does not appear targeted and the compromised site was cleaned up within 24 hours. We have noticed some recent changes to Angler, as well as the inclusion of newer Flash exploits. A set of indicators for this compromise is at the end of this post.

Created: 2015-11-03T19:21:57.947000

References: http://research.zscaler.com/2015/11/chinese-government-website-compromised.html

id: 563909554637f2388aaf2311

Passive DNS:

[SNIP]

創建一個新的命令

Harpoon是一種基於插件的工具,所以通過創建新插件很容易添加新特性。要做到這一點,您需要在harpo/Command中創建一個新文件,並實現一個繼承命令類的類。假設我們想要實現一個ping命令(這不是很有幫助),我們可以創建下面的ping.py文件:

import os

from harpoon.commands.base import Command

class CommandPing(Command):

"""

# Ping

Here put the help in markdown format

"""

name = "ping"

decription = "Ping command"

def add_arguments(self, parser):

# Here add arguments to the parser (which is an argparse parser)

parser.add_arguments("IP", help="IP to ping")

# It is nice to save the parser to call help later if needed

self.parser = parser

def run(self, conf, args, plugins):

# here, implements the actual task

# args contains the arguments received from the parser

os.system("ping -c 1 " + args.IP)


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

滲透技巧——獲取Windows系統下DPAPI中的MasterKey
深度分析Scarab的新變種勒索軟體

TAG:嘶吼RoarTalk |