ホームページ > 運用・保守 > 安全性 > ZoomEye を使用して APT 攻撃を検出する分析例

ZoomEye を使用して APT 攻撃を検出する分析例

WBOY
リリース: 2023-05-27 19:19:11
転載
1397 人が閲覧しました

ZoomEye 上のオンライン データは上書き更新モードになっており、2 回目のスキャンでデータがスキャンされない場合、更新されたデータは上書きされません。ZoomEye 上のデータは、1 回目のスキャンで取得されたバナー データを保持します。このメカニズムは、実際には、この種の悪意のある攻撃ソースの追跡に適したシーンを持っています: ボットネット、APT、その他の攻撃などの悪意のある攻撃に使用されるダウンロード サーバーは、発見された後、通常は直接非アクティブ化され、放棄されます。非常に暴力的で、すぐにオフラインになりました。したがって、多くの攻撃サイトが ZoomEye によってオンラインにキャッシュされる可能性があります。

もちろん、ZoomEye 履歴 API で提供されるデータは、カバーしているかどうかに関係なく、スキャンごとにクエリできますが、現在提供されている ZoomEye 履歴 API は IP 経由でのみクエリでき、キーワード経由ではクエリできません。一致検索なので、上記の ZoomEye オンライン キャッシュ データ検索および位置特定と組み合わせて使用​​する必要があります。

ケース 1: Darkhotel APT

数日前、実際に「ブラック テクノロジー」ナレッジ プラネットでこの件について言及しましたが、修正が必要な「バグ」が 1 つだけあります。 Darkhotel が今回使用した IE 0day は CVE-2020-0674 ではなく CVE-2019-1367 です (勋肉丁@奇安信に感謝) もちろん、この「バグ」はこの記事のテーマには影響しません。

ZoomEye を使用して APT 攻撃を検出する分析例

上の図からわかるように、ZoomEye オンライン データを使用して、当時の Darkhotel 水たまり攻撃サイトの IP アドレスを特定しました。ZoomEye SDK を使用してクエリを実行しました。この IP の履歴:

╭─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
ログイン後にコピー

ZoomEye 履歴データにこの IP データを含むタイム ノードと対応するポート サービスをリストします

 ...
 >>>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)
ログイン後にコピー

埋め込まれたタイム ノードとポートを見てみましょうIE の水飲み場攻撃の 0day:

>>> 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)
ログイン後にコピー

明らかに、この水飲み場攻撃のおおよその時間範囲は 2019-10-06 05:24:44 から 2020-01-28 10:58:02 です。また、このIPは明らかに攻撃者が購入したものではなく、VPSなどを利用して特定のWebサイトを攻撃の水飲み場として直接攻撃しており、2019年10月6日の時点でこのIP Webサイトが侵入されていたことは確実です。 !この水たまりの Web サイトの性質から、基本的に Darkhotel の攻撃の主なターゲットは、この Web サイトにアクセスするユーザーであると推測できます。

考えられる侵入ポイントの分析に役立つように、この IP が 2019 年にどのポート サービスをオープンしたかを引き続きリストしてみましょう:

>>> 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')
ログイン後にコピー

2019 年 5 月の非常に典型的な JSP オペレーティング環境当時、ポート 8009 はTomcat バックエンド管理の脆弱なパスワードなどの問題は、常に一般的な侵入手段となってきました~~

ちなみに、実際には、この攻撃には別の IP も含まれています。アップデートがカバーされているため、ZoomEye オンライン検索で直接検索することはできません。ただし、IP がわかっている場合は、ZoomEye 履歴データ API を使用して、この IP の履歴データをクエリすることもできます。ここでは詳細は説明しません。

ケース 2: ポイズン・アイビー (APT-C-01)

ポイズン・アイビー (APT-C-01) の詳細なレポートについては、以下を参照してください。 https://ti.qianxin.com/uploads/2018/09/20/6f8ad451646c9eda1f75c5d31f39f668.pdf 私たちは、

「Poison Ivy 組織が攻撃ペイロードを制御および配布するために使用するツール」に直接焦点を当てます。 制御ドメイン名 http://updateinfo.servegame.org"

"次に、

hxxp://updateinfo.servegame.org/tiny1detvghrt.tmp
ログイン後にコピー

"

URL からペイロードをダウンロードします。まず、対応するドメイン名を見つけようとします。 IP、明らかに現時点ではあまり取得されていません:

╭─heige@404Team ~╰─$ping updateinfo.servegame.orgping: cannot resolve updateinfo.servegame.org: Unknown host
ログイン後にコピー

Qi Anxin のレポートでは、使用されているダウンロード サーバーの WEB サービス ディレクトリを横断できることがわかります

ZoomEye を使用して APT 攻撃を検出する分析例

したがって、ファイル名「tiny1detvgult.tmp」を直接検索してみると、確かにそれが見つかりました。

ZoomEye を使用して APT 攻撃を検出する分析例

ここで基本的に確認できます。 updateinfo。servegame.org に対応する IP は 165.227.220.223 です。次に、古い方法で履歴データのクエリを開始します:

  >>> 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)
ログイン後にコピー
この tiny1detvgult.tmp デプロイメントの時間間隔を調べ続けます:

>>> for i in data['data']:
 ...     if "tiny1detvghrt.tmp" in i['raw_data']:
 ...             print(i['timestamp'],i['portinfo']['port'])
 ...
 (u'2018-05-20T00:55:48', 80)
 (u'2018-04-08T07:53:00', 80)
 (u'2017-11-21T19:09:14', 80)
ログイン後にコピー
少なくとも、攻撃は 2017 年 11 月末にすでに展開されていると判断できます。この時間ノードの前に別の時間ノードがあります: 2017-10-04 05:17:38。見てみましょう彼のバナー データ:

>>> for i in data['data']:
 ...     if "2017-10-04" in i['timestamp']:
 ...             print(i['raw_data'])
 ...
 HTTP/1.1 200 OK
 Date: Tue, 03 Oct 2017 21:17:37 GMT
 Server: Apache
 Vary: Accept-Encoding
 Content-Length: 1757
 Connection: close
 Content-Type: text/html;charset=UTF-8nbsp;HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 
  <title>Index of /</title>
 
 <h2>Index of /</h2>
  
ログイン後にコピー
           
Name a> Last modified a> Size a> Description a>

doajksdlfsadk.tmp a> 2017-09-15 08:21   4.9K  
doajksdlfsadk.tmp.1 a> 2017-09-15 08:21   4.9K  
doajksdlrfadk.tmp a> 2017-09-27 06:36   4.9K  
dvhrksdlfsadk.tmp a> 2017-09-27 06:38   4.9K  
vfajksdlfsadk.tmp a> 2017-09-27 06:37   4.9K  
wget-log a> 2017-09-20 07:24   572   

これから バナー データから、これは最初のケースの適切にターゲットを絞った侵入後のインプラントの水たまりとは異なると結論付けることができます。これは独立して制御可能なサーバーである必要があります。 doajksdlfsadk.tmp の命名方法とファイルから、サイズ (両方とも 4.9k) は基本的に、今回のノードが攻撃を開始する前の攻撃者の実際の戦闘訓練であると推測できます! したがって、この IP サーバーは APT 用に準備されました最初から攻撃し、発見された直後に放棄されました!

以上がZoomEye を使用して APT 攻撃を検出する分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート