Wireshark マルウェア解析
説明
このラボでは、Log4J エクスプロイトとして知られる悪意のあるパケットキャプチャを解析しました。調査は、パケットキャプチャ解析でいつも使用しているのと同じプレイブック、つまり統計情報を調べて、どれだけのエンドポイントがどれだけ通信しているかを確認することから始めました。あまりにも多くの IP アドレスに気づいたため、それらを地球上にマッピングしたいと思い、IP アドレスを国と都市に解決する Max Mind の GEOIP データベースをインストールして設定しました。この数の IP アドレスは、Log4J エクスプロイトやその他の悪意のあるスキャンのためのボットネットからの潜在的な攻撃を示しています。キャプチャ内のトラフィックが https(暗号化)ではなく http を使用していたため、Java Naming and Directory Interface である「jndi」でフィルタリングして、エクスプロイトをクリアテキストで特定することができました。このフィルタで最初にヒットしたパケットは HTTP POST リクエストで、User-Agent フィールドを調べると、IP アドレスへの ldap リクエストとそれに続くエンコードされたテキストが明らかになりました。CyberChef でそのテキストをデコードすると、シェルスクリプトをダウンロードするための IP への wget、実行権限を付与する chmod コマンド、そしてスクリプトを実行するというコードであることがわかりました。さらに、ホストマシンがコマンドアンドコントロールサーバーを示す外部 IP への発信接続を試みたかどうかを調べるため、送信元アドレスとしてフィルタリングし、TCP 接続の開始を示す TCP SYN パケットでフィルタリングして、接続がないことを確認しました。これは、マシンがパッチ適用済みであるか、暗黙のファイアウォールルールが発信接続をブロックしていることが原因と考えられます。攻撃が失敗したことが明らかになった後、wget コマンド内の IP についてさらなる脅威インテリジェンスを実施し、その IP が既知の悪意のある IP であり、VirusTotal のコミュニティタブでは Log4shell 攻撃に関連付けられていることがわかり、攻撃がさらに裏付けられました。私のアプローチは、まず誰がターゲットサーバーと通信していたかを確認し、次に攻撃されたサーバー(198.71.247.91)が新しい発信接続を開始したかどうかを判断することが重要でした。
使用したツール
- Wireshark
- Virus Total
- CyberChef
- Max Mind の GEOIP データベース
使用した環境
- Oracle Virtual Box 上の Kali Linux
ラボの概要:
PCAP を開いたとき、最初に行うのは、デバイスがいくつ存在/通信しているかを確認することです(Statistics -> Endpoints)
異常な量のトラフィックと、さまざまな国からの異なる IPv4 会話に気づいた後、Max Mind の GEOIP データベースを使用して世界地図上に表示するためにエンドポイントをエクスポートしました(Endpoints -> Map -> Open in Browser)
Log4J エクスプロイトの PCAP を扱っているとわかっていたので、このエクスプロイトが Java Naming and Directory Interface(jndi)の脆弱性を利用することから、まずこのフィルタから始めるのが良いと考えました(ip contains "jndi")
"jndi" のフィルタはうまく機能し、最初のパケット(HTTP POST リクエスト)を展開して User-Agent フィールドを調べると、IP アドレスへの ldap リクエストとそれに続く base-64 エンコードされたテキストが示されていました。
攻撃の最初の POST リクエストの末尾をデコードすると、シェルスクリプト lh[.]sh をダウンロードするための IP への Web リクエストである wget と、実行権限である x を追加する権限変更を行う chmod コマンドが示されます。最後に、シェルスクリプトが起動されます。
次に、ホストサーバー 198.71.247.91 が外部サーバー、具体的にはデコードされた文字列内の wget の IP アドレスに対して接続を行ったかどうかを確認しました。TCP 接続を確立する SYN パケットでフィルタリングしたところ、サーバーは外部アドレスに接続していないことがわかりました。これはおそらく、サーバーがパッチ適用済みであり、エクスプロイトが失敗したことを意味します。
このラボでは、ネットワーク上でのライブ解析ではなく、パケットキャプチャ(.pcapng ファイル)を解析する実践的な経験を得ることができました。悪意のある攻撃の試みの実際のパケットキャプチャを入手して解析することは非常に興味深く、特にそれが暗号化ではなく http ポート 80 を介したクリアテキストであった点が印象的でした。以前のラボやウォークスルーで VirusTotal と CyberChef を使用したことがありますが、pcap から抽出されたアーティファクトが本物であるとわかると、サイバーセキュリティコミュニティの他の人々が攻撃元 IP アドレスとエクスプロイト自体に関してまとめたリソースを調べたいという気持ちがさらに強まりました。さらに、Wireshark は以前にも使用したことがありますが、IP アドレスから場所を解決するために Max Mind の GEOIP データベースを設定し、それを地図としてエクスポートできるようにしたのは今回が初めてであり、これもこのラボのもう一つのハイライトでした。