
Perlで実装されたシンプルなTCP/UDPハニーポット
Perl で実装された TCP/UDP ハニーポットプログラム
malbait の README、2/10/17
(ちなみに私のビットコインアドレスは 3A7yuqBcPAcVEM59bNAVQdTCmkxRb5JRgE です)
(BTC用の代替アドレスも用意しました。一部のビットコインウォレットが特定のアドレスに対応していないという報告を受けているためです: 1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme)
malbaitへようこそ。オールインワンのシンプルなPerlハニーポットです!
Malbait はハニーポット、つまり「マルウェアベイト(malware bait)」プログラムです。ハッカーの時間を浪費させ、インターネット(またはLAN)上の敵対的トラフィックを監視するように設計されています。
Malbait は、選択された、またはデフォルトのTCPポートと、選択した場合はUDPポート上に一連の偽サーバーを作成します。誰かまたは何かが接続すると、その入力はログファイルに記録されます。
これらはバックグラウンドプロセスとして実行されるため、コンピュータの電源を切るか、シェルの "kill"(できれば "skill")コマンドを使って終了させる必要があります。netstat で監視できます。お勧めは:
sudo netstat -anp|grep perl
で何が待ち受けているかを確認し、
sudo skill -9 perl
で飽きたら終了させる方法です。
NB: install.sh を使ってこのプログラムをインストールした場合は、次を実行する必要があります
sudo skill -9 malbait
代わりに。ただし、次のコマンドで監視することはできます: sudo netstat -anp|grep perl
あるいは、単にマシンをシャットダウンしても構いません。perl を他の目的で使っている間は malbait を使わないでください! 専用の「ベイト」マシン、例えばデフォルトポートで動作するRaspberry Piのような小型機か、できるだけ多くのポート(できればすべて)をリッスンできる大型コンピュータを推奨します。
Malbait はデフォルトでTCPを使用しますが、UDP単独でも、両方を並行して実行することもできます。
このプログラムはスーパーユーザーモードで使用することを非常に強くお勧めします。gainroot (sudo gainroot) を呼び出すか、sudo で実行 (sudo malbait) してください。最初の1024ポートを開くにはスーパーユーザー権限が必須です。
起動方法は次のとおりです
malbait -foo
パラメータなしで実行すると、さらに詳しい使い方を説明する長文を出力します。「そのまま」始めたい場合は
malbait -defaults
を実行してください。デフォルトのポートを開き、可能な場所にサーバーを作成します。
Malbait は、Telnet、FTP、SMTP、POP3、BGP、HTTP(あまりうまくない)、TR-69(あまりうまくない)、imap、systat、echo、昔ながらのASCII "time" サーバー用のダミーサーバーを作成できます。デフォルトではこれらはすべてのデフォルトポートで開かれますが、ポートを指定することもできます。
ポートの範囲を開くこともできます。例:
malbait -ports:1-1024
ポート1〜1024(「well-known」または「restricted」ポート)を開き、適切な場所に偽サーバーを作成します。
malbait の使用は、お使いのメモリ量によってのみ制限されます。 -trans_proto:tcpudp と -ports: オプションを使えば、十分に強力なマシンならすべてのポートを監視できます。逆に、非力なマシンならクラッシュするでしょう。私の小さなLenovo x200ノートは、おかしくなり始めるまでに約6000ポートほど処理できますが、環境によって異なります。新しいマシンの本当の性能を知りたいですか? Malbait はベンチマークを提供できます。個人的には、非常に強力なコンピュータで
malbait -ports:1-65535 -trans_proto:tcpudp
を実行すると何が起こるかを見てみたいです。私の経験では、その10%だけでも、確かにより多くの悪意のあるUDPトラフィック(主に無料電話を騙し取ろうとするクソ野郎ども)が存在し、telnet はまさにペトリ皿ですが、その先の未知の領域の調査も見てみたいです。馬力(そしてファイアウォールを完全に無効にする能力と度胸)がある人がいれば。
例えば、UDPモードでFTPサーバーを開こうとすると ( malbait -proto:ftp -trans_proto:udp ) デフォルトポートは開きますが、偽のFTPサーバーは得られません! UDPは、asciitime、systat、echo、そして特別な "hacktime" と "fuzz" メタプロトコルというUDP互換サービスに対してのみサーバーを作成します。
Hacktime は映画「Kung Fury」に着想を得た冗談みたいなものです。昔風と新式の両方のNTPタイムサーバーを作成し、すべて1またはすべてFFを送信します。アイデアとしては、Unix Millenniumのロールオーバー日("hacktime-2036")または起動直後のシステム("hacktime-1900")をエミュレートするものです。もちろん、実際のNTPサーバーはもっと複雑なので動作しないでしょうが、あなたをNTPサーバーだと思って攻撃してくるハッカーを間違いなく混乱させます!
Fuzz は、まさにその名の通り、自動化された攻撃に対してランダムなゴミを投げつけて撹乱する試みです。これも実験的なもので、それほど真剣に受け止めているわけではありませんが、誰かが役に立つかもしれないと思って残しています。
HTTPサーバーは "webpage.html" というファイルを探します。見つからない場合は、代わりにシンプルな404ページを生成します。繰り返しますが、これは素晴らしいものではありません。このプログラムの目的は、退屈な普通のウェブスパイダーよりも、あなたに接続しようとする風変わりでランダムなクライアントを調べる手助けをすることです。
ウェブブラウザで開くと、コンテンツの下に "HTTP/1.1 200 OK" という文字列がたくさん表示されることに注意してください。これは、ウェブブラウザで開くことを想定していないためで、潜在的に悪意のあるクローリングボットをできるだけ長く回線につなぎ止めておくことを目的としています。
もちろん、デフォルトの webpage.html を独自のものに置き換えても構いません。使用していただいて構いませんが、これはデモンストレーション目的で設計されています。
-transblank オプションを使うと、偽サーバーの作成を上書きできます。つまり、
malbait.pl -port:23 -proto:transblank
または
malbait.pl -proto:telnet -transblank
と実行すると、malbait は「Telnetサーバー」を作成する代わりに、空白応答に最も近いもの(単一のキャリッジリターン)をクライアントに送信します。
コンピュータエキゾチカを愛する人々のために、さまざまなオプションが用意されています。
-noloop: ループしません。つまり、各サーバーは1回の接続で終了します。UDPサーバーの場合は、クライアントが「コマンド」を入力すると終了します。
-no_multiplexing: TCPサーバーのマルチプレクシング(子プロセスでのサーバー起動)を停止します。 この方法で多くのメモリを節約できますが、お勧めしません。nmap が Malbait のTCPサーバーをクラッシュさせることが知られており、サーバーを子プロセスで実行することで、malbait はこの攻撃や他の悪意のある接続試行から回復し、記録することができます。そのため、"-no_multiplexing" オプションを使用すると、作業フォルダ/ディレクトリのいたるところに孤児の一時ファイルが発疹のように散らばり、とても悲しい思いをすることは保証します。また、サーバーがクラッシュすると永久に失われます。TL;DR: このオプションは使わないでください。
-maxreq:nn 同時に nn 個のTCPサーバーを生成できるため、その数の「クライアント」を同時に(潜在的に)処理できます。デフォルトは2です。
-noblocking: サーバーを「非ブロッキング」モードで起動します。あまり意味はありませんが、-no_multiplexing と組み合わせて使うと nmap の妨害に対する脆弱性が低くなるかもしれません。でも、そんなことをしたいと思うでしょうか? 真面目な話、非ブロッキングを好むクライアントもいるので、問題が発生したらこのオプションを試してみてください。
-timeout:nn クライアントのタイムアウトを nn 秒に設定します。デフォルトは30ですが、自動化された攻撃が多い場合は、コンピュータに接続する他のマルウェアを見逃さないように、これを下げるとよいでしょう。
-report:filename.txt レポートファイルに好きな名前を付けられます。
-recvbuffer:nn: recv(受信バイト数)をバッファリングする内部変数を値 nn に設定します。デフォルトは1024なので、一度に1k以上を取り込みたい場合(不合理な欲求ではありません)は、ここで変更します。
malbait のテキスト出力は、現時点では少々...乱雑です。デバッグメッセージやステータス情報でいっぱいです。開発者かマゾヒストでない限り、無視してかまいません。実際のエラーメッセージはログファイルに記録されます。
Malbait は3種類のログファイルを作成します。マシンに接続したすべてのクライアントの概要を示すCSVファイル、より詳細なデータと分析を含むテキストファイル、そしてmalbaitがポートを開いたり閉じたり、サーバーを作成/破棄するときに自動削除される一時ファイル(TEMP-16537 のような名前)です。
一時ファイルについては申し訳ありません。すべてのトラフィックを確実にキャプチャするための唯一の方法でした。たとえ私たちをクラッシュさせようとするトラフィックであってもです! もし残っているのを見かけても、何もせず、ページを更新すればおそらく消えます。
このプログラムに興味を示してくれて、メールやお金、ラブレター、脅迫などを送ってくれれば、更新や新機能でサポートします。例えば、ICMPサポートは簡単に追加できますし、ウェブクライアントの処理も改善できるかもしれません。これを書くのはとても楽しかったので、サポートするのもきっと本当に楽しめるでしょう! しかし、誰からも連絡がなければ、それほど役に立たないと思って、他のことに移ります。もっと素晴らしい機能を見たい、または「迷惑なバグX」を修正してほしいと思うなら、ぜひ 連絡してください!
私のメールアドレスは [email protected] です。 このプログラムのビットコインアドレス(ヒント、ヒント)は 16P267RxgkLsEDVEKwLGsfnUCJ6bfgyWKR です。
読んでくれてありがとう。そして、どうかサトシを送ってください!