Heim > Artikel > Betrieb und Instandhaltung > Beispielanalyse für die Verwendung von ZoomEye zur Erkennung von APT-Angriffen
Die Online-Daten auf ZoomEye befinden sich im Überschreib- und Aktualisierungsmodus. Das heißt, wenn die Daten beim zweiten Scan nicht gescannt werden, werden die aktualisierten Daten nicht überschrieben. Die Daten auf ZoomEye behalten die beim ersten Scan erhaltenen Bannerdaten. Dieser Mechanismus eignet sich tatsächlich gut für die Rückverfolgbarkeit böswilliger Angriffe: Die von böswilligen Angriffen wie Botnets, APT und anderen Angriffen verwendeten Download-Server werden normalerweise direkt deaktiviert und aufgegeben, nachdem sie entdeckt wurden. Natürlich sind einige gehackte Ziele Sie sind auch direkt offline sehr gewalttätig! Daher ist es wahrscheinlich, dass viele Angriffsseiten von ZoomEye online zwischengespeichert werden.
Natürlich können die in der ZoomEye-Verlaufs-API bereitgestellten Daten für die bei jedem Scan erhaltenen Bannerdaten abgefragt werden, unabhängig davon, ob sie abgedeckt sind oder nicht. Die derzeit bereitgestellte ZoomEye-Verlaufs-API kann jedoch nur über IP abgefragt werden Die Suche erfolgt über die Stichwortübereinstimmung, daher müssen wir sie in Verbindung mit der oben erwähnten ZoomEye-Online-Cache-Datensuche und -Positionierung verwenden.
Tatsächlich habe ich es vor ein paar Tagen im „Black Technology“ Knowledge Planet erwähnt, aber es gibt nur einen „Bug“, der behoben werden muss: der IE 0day, der dieses Mal von Darkhotel verwendet wird sollte CVE-2019-1367 statt CVE-2020-0674 sein (Danke an 勋肉丁@奇安信). Dieser „Fehler“ hat natürlich keinen Einfluss auf das Thema dieses Artikels.
Wie Sie auf dem Bild oben sehen können, haben wir zu diesem Zeitpunkt ZoomEye-Onlinedaten verwendet, um die IP-Adresse einer Darkhotel-Puddle-Attacke zu lokalisieren. Wir haben ZoomEye SDK verwendet, um den Verlauf dieser IP abzufragen:
╭─heige@404Team ~╰─$python Python 2.7.16 (default, Mar 15 2019, 21:13:51)[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)] on darwinType "help", "copyright", "credits" or "license" for more information. import zoomeye zm = zoomeye.ZoomEye(username="xxxxx", password="xxxx") zm.login() u'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX...' data = zm.history_ip("202.x.x.x") 22
List die IP, die in den historischen ZoomEye-Daten enthalten ist. Der Zeitknoten der Daten und der entsprechende Portdienst Dieser Watering-Hole-Angriff findet vom 06.10.2019 um 05:24:44 Uhr bis zum 28.01.2020 um 10:58:02 Uhr statt. Darüber hinaus handelt es sich bei dieser IP offensichtlich nicht um einen vom Angreifer erworbenen VPS, sondern er greift direkt eine bestimmte Website an ein „Wasserloch“ für Angriffe, es ist sicher, dass diese IP-Website bereits am 06.10.2019 angegriffen wurde! Aus der Art der Website dieser Pfütze können wir grundsätzlich schließen, dass das Hauptziel des Angriffs von Darkhotel die Benutzer sind, die diese Website besuchen!
Wir listen weiterhin auf, welche Portdienste 2019 von dieser IP geöffnet wurden, um uns bei der Analyse möglicher Einbruchspunkte zu helfen:
... >>>for i in data['data']: ... print(i['timestamp'],i['portinfo']['port']) ... (u'2020-01-28T10:58:02', 80) (u'2020-01-05T18:33:17', 80) (u'2019-11-25T05:27:58', 80) (u'2019-11-02T16:10:40', 80) (u'2019-10-31T11:39:02', 80) (u'2019-10-06T05:24:44', 80) (u'2019-08-02T09:52:27', 80) (u'2019-07-27T19:22:11', 80) (u'2019-05-18T10:38:59', 8181) (u'2019-05-02T19:37:20', 8181) (u'2019-05-01T00:48:05', 8009) (u'2019-04-09T16:29:58', 8181) (u'2019-03-24T20:46:31', 8181) (u'2018-05-18T18:22:21', 137) (u'2018-02-22T20:50:01', 8181) (u'2017-03-13T03:11:39', 8181) (u'2017-03-12T16:43:54', 8181) (u'2017-02-25T09:56:28', 137) (u'2016-11-01T00:22:30', 137) (u'2015-12-30T22:53:17', 8181) (u'2015-03-13T20:17:45', 8080) (u'2015-03-13T19:33:15', 21)
Eine sehr typische JSP-Betriebsumgebung, Port 8009 wurde im Mai 2019 geöffnet, und der Tomcat-Hintergrund verwaltet Probleme wie Schwache Passwörter waren schon immer ein gängiges Mittel zum Eindringen ~~
Übrigens war dieser Angriff tatsächlich mit einer anderen IP verbunden, da das IP-bezogene Port-Banner durch das Update abgedeckt wurde, also habe ich online direkt über ZoomEye gesucht. Es kann nicht durchsucht werden. Aber wenn Sie diese IP kennen, können Sie auch die ZoomEye-API für historische Daten verwenden, um die historischen Daten dieser IP abzufragen. Ich werde hier nicht näher darauf eingehen.
Fall 2: Poison Ivy (APT-C-01)
Bitte beachten Sie den ausführlichen Bericht zu Poison Ivy (APT-C-01) https://ti.qianxin.com/uploads/2018/09/20/6f8ad451646c9eda1f75c5d31f39f668.pdf Wir konzentrieren uns direkt auf
"Dann laden Sie die Nutzlast von
>>> for i in data['data']: ... if "164.js" in i['raw_data']: ... print(i['timestamp'],i['portinfo']['port']) ... (u'2020-01-28T10:58:02', 80) (u'2020-01-05T18:33:17', 80) (u'2019-11-25T05:27:58', 80) (u'2019-11-02T16:10:40', 80) (u'2019-10-31T11:39:02', 80) (u'2019-10-06T05:24:44', 80)
"
URL herunter. Wir versuchen zunächst, die IP zu finden, die diesem Domainnamen entspricht. Offensichtlich haben wir zu diesem Zeitpunkt nicht viel gewonnen :>>> for i in data['data']: ... if "2019" in i['timestamp']: ... print(i['timestamp'],i['portinfo']['port'],i['portinfo']['service'],i['portinfo']['product']) ... (u'2019-11-25T05:27:58', 80, u'http', u'nginx') (u'2019-11-02T16:10:40', 80, u'http', u'nginx') (u'2019-10-31T11:39:02', 80, u'http', u'nginx') (u'2019-10-06T05:24:44', 80, u'http', u'nginx') (u'2019-08-02T09:52:27', 80, u'http', u'nginx') (u'2019-07-27T19:22:11', 80, u'http', u'nginx') (u'2019-05-18T10:38:59', 8181, u'http', u'Apache Tomcat/Coyote JSP engine') (u'2019-05-02T19:37:20', 8181, u'http', u'Apache Tomcat/Coyote JSP engine') (u'2019-05-01T00:48:05', 8009, u'ajp13', u'Apache Jserv') (u'2019-04-09T16:29:58', 8181, u'http', u'Apache httpd') (u'2019-03-24T20:46:31', 8181, u'http', u'Apache Tomcat/Coyote JSP engine')
hxxp://updateinfo.servegame.org/tiny1detvghrt.tmpSchauen Sie sich weiterhin die Uhrzeit an Intervall dieser tiny1detvghrt.tmp-Bereitstellung:
╭─heige@404Team ~╰─$ping updateinfo.servegame.orgping: cannot resolve updateinfo.servegame.org: Unknown host
Zumindest ist es in Ordnung. Es wird festgestellt, dass der Angriff seit Ende November 2017 eingesetzt wurde. Dann gibt es vor diesem Zeitknoten einen weiteren Zeitknoten. 2017-10-04 05:17: 38. Werfen wir einen Blick auf seine Bannerdaten:
>>> data = zm.history_ip("165.227.220.223") >>> 9 >>> for i in data['data']: ... print(i['timestamp'],i['portinfo']['port']) ... (u'2019-06-18T19:02:22', 22) (u'2018-09-02T08:13:58', 22) (u'2018-07-31T05:58:44', 22) (u'2018-05-20T00:55:48', 80) (u'2018-05-16T20:42:35', 22) (u'2018-04-08T07:53:00', 80) (u'2018-02-22T19:04:29', 22) (u'2017-11-21T19:09:14', 80) (u'2017-10-04T05:17:38', 80)
Aus diesen Bannerdaten lässt sich schließen, dass es sich hierbei um einen Server handelt, der im ersten Fall gezielt nach der Intrusion implantiert werden kann und unabhängig kontrollierbar ist durch den Angreifer. Aus der Benennungsmethode und der Dateigröße von doajksdlfsadk.tmp (beide sind 4,9 KB) kann grundsätzlich geschlossen werden, dass dieser Zeitpunkt die eigentliche Kampfübung sein sollte, bevor der Angreifer den Angriff startet! den APT-Angriff von Anfang an und wurde sofort nach seiner Entdeckung abgebrochen!
Das obige ist der detaillierte Inhalt vonBeispielanalyse für die Verwendung von ZoomEye zur Erkennung von APT-Angriffen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!