ハニーポットレポート(20260123~0203)

未分類

 ハニーポット(1台 解放ポート80,8080,443)に対するリクエストを解析し、結果をまとめました。

 今回は、honeypotプログラムを改修し、443ポート向けSSL/TLSも受け取ることができるようになりましたので、今までより拾えるリクエストが増えています。
 今期の攻撃集計期間は11日間で、総アクセス数3597件 一日平均約327件でした。

攻撃の説明

 今回の攻撃で最も多かったのは、一般的なスキャナを使用したスキャニング攻撃で、1964件該当しました。これは、一般的なスキャナが使用するUA(zgrab/0.x ,python-requests ,Nmap Scripting Engine )を使用したリクエストを分類したものです。リクエスト全体の半分以上がスキャナを使用していることから、攻撃者やクローラー系ボットが、スキャナ系アプリを使用して侵入前のスキャニングを行っていることがわかります。

 次に多かったのは、IOT系のCGIを狙った攻撃で、189件該当しました。これは、脆弱性を含有するIoT機器が公開されていないかスキャンしているものです。スキャン対象として多かったPATHは次の通りです。

# スキャンが多かったPATH
/SDK/webLanguage
/boaform
/SystemDataService
/cgi-bin/gw.cgi, runsh.cgi, admin.cgi, login.cgi, setup.cgi
/systemb

 防犯カメラ等のIoT機器が外部から接続可能な状態になっている環境では、特にこれらのフォルダに対するアクセスを監視することが重要ですね。対象機器を調べてみたところ、IPカメラ(Hikvision 等)、ルータ(TP-Link等)で実際に使われているフォルダ構成のようです。

 初めて観測した攻撃では、Next.jsに対するプロトタイプ汚染を利用して、Base64でエンコードしたマルウェアを丸ごとリクエストで送信する攻撃を受けています。1つのリクエストで250kバイトものデータを送ってきているのですが、こんなことができることを初めて知りました。暗号化されたペイロードをデコードしたところ、x86系Linuxの実行ファイルが見つかり、ftpでマルウェアをダウンロードする仕組みになっていました。送信元はドイツのIPで、マルウェアのダウンロード先はオランダのIPでした。

 このほかには、偽装接続(FORWARD_PROXY_HEADERを127.0.0.1に偽装したもの)がありました。HTTP_X_FORWARDED_FOR等の偽装可能な値を信じて、IPアドレスによる管理者認証を行っているサービスがあると、認証突破されてしまう恐れがあります。そもそもIPアドレスでユーザを選別するようなコードは危険ですので、お勧めできません。

# 危険なコード ダメゼッタイ!
# クライアントIPを X-Forwarded-For から取得(危険)

[PHP例]
#$ip = $_SERVER['HTTP_X_FORWARDED_FOR']; # 偽装される危険がある
$ip = $_SERVER['REMOTE_ADDR']; # 偽装されない
if ($ip === "127.0.0.1") {
    allow_admin();  
}

[python例]
#client_ip = request.headers.get("X-Forwarded-For") # 偽装される危険がある
client_ip = request.remote_addr  # 偽装されない
if client_ip == 127.0.0.1:
  allow_admin()

攻撃回数の推移(ポート毎)

 ポート毎の攻撃リクエストの推移です。
 全体的にみると、80と8080に対して、443ポートへの攻撃が少ないことがわかります。まずは80番ポートでSCANしてみるという流れがあるのかもしれませんが、443ポートはSSLで暗号化している分、攻撃するための手続きが一段余分にかかることも影響していると思います。

国毎のアクセス割合(上位10国)

 Google等による検索エンジンのアクセスも含まれているので、どうしてもアメリカが多くなってしまう気がしています。それにしても、毎回オランダやセーシェルが上位に入ってくるのですが、大きな組織でもあるのでしょうか?ちなみに日本は40位で、アクセスは6件しかありませんでした。

攻撃タイプ(上位10種類)

 攻撃を種類別で集計したところ次のようになりました。それぞれの攻撃特徴に合わせた検知ルールを作成し、リクエストに対して正規表現でマッチングさせる分別プログラムを作りました。
 T-POTを使えばもっと簡単に集計ができそうなのですが、自分の力にならないので、Pythonで一から作成しており、パラメータやルールはオリジナルのものになります。

攻撃タイプ件数
SCANNER_UA1964
IOT_CGI_SCAN189
HTTP_PROXY_CONNECT_ABUSE185
PROTO_POLLUTION136
NODEJS_RCE130
KILLCHAIN_NODE_RCE128
JS_REVERSE_SHELL123
IOT_SDK_API_ENUM120
DIR_SCAN87
API_ENUM84

最後に

 新しい攻撃が来るとワクワクしてしまうのは私だけでしょうか。知れば知るほど奥の深い世界だなぁと感じています。
 現在22番ポートに対するハニーポットプログラムも独自で開発しているのですが、テストで手間取っているので、公開はまだ先になりそうです。よく使われているアカウント名とかパスワードを一覧にしたいですね。

見た目も大事と思って作ったタイトルイラスト