ApacheKillerでBlackJumboDogを攻撃してみた
昨日参加させて頂いたせきゅぽろでApache Killerのお話があったのですが、ちょっと気になったので・・・・Full Disclosureで公開されているkillapache.plで、BlackJumboDogへのDoSが可能かどうかを試してみました。
killapache.plが有効に動作するように、BlackJumboDogの方は、デフォルトの設定から下記の部分を変更しました。
同時接続 10->60 攻撃が50スレッドで動作するためトップページ index.html を xxx.jpg(18Kbyte) ターゲットのファイルサイズが小さいと有効に動作しないため
攻撃を受けたBlackJumboDogのトレース表示は次のような感じで、一度Rangeの動作を確認したのち、特有のRangeヘッダを打ち込んで来るようです。
RECV 5328 192.168.0.11 HEAD / HTTP/1.1 RECV 5328 192.168.0.11 Host: 192.168.0.10 RECV 5328 192.168.0.11 Range:bytes=0- RECV 5328 192.168.0.11 Accept-Encoding: gzip RECV 5328 192.168.0.11 Connection: close RECV 5328 192.168.0.11 SEND 5328 192.168.0.11 HTTP/1.1 206 Partial Content SEND 5328 192.168.0.11 Server: BlackJumboDog Version 5.3.3.0 SEND 5328 192.168.0.11 MIME-Version: 1.0 SEND 5328 192.168.0.11 Date: Sat, 01 Oct 2011 22:00:49 GMT SEND 5328 192.168.0.11 Last-Modified: Mon, 29 Aug 2011 20:52:00 GMT SEND 5328 192.168.0.11 Accept-Range: bytes SEND 5328 192.168.0.11 Content-Range: bytes 0-197454/197455 SEND 5328 192.168.0.11 Connection: Keep-Alive SEND 5328 192.168.0.11 RECV 5512 192.168.0.11 HEAD / HTTP/1.1 RECV 5512 192.168.0.11 Host: 192.168.0.10 RECV 5512 192.168.0.11 Range:bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,5-11,5-12,5-13,5-14,5-15,5-16,5-17,5-18,5-19,5-20,5-21,5-22,5-23,5-24,5-25,5-26,5-27,5-28,5-29,5-30,5-31,5-32,5-33,5-34,5-35,5-36,5-37,5-38,5-39,5-40,5-41,5-42,5-43,5-44,5-45,5-46,5-47,5-48,5-49,5-50,5-51,5-52,5-53,5-54,5-55,5-56,5-57,5-58,5-59,5-60,5-61,5-62,5-63,5-64,5-65,5-66,5-67,5-68,5-69,5-70,5-71,5-72,5-73,5-74,5-75,5- 〜〜〜〜〜〜〜略〜〜〜〜〜〜〜 1267,5-1268,5-1269,5-1270,5-1271,5-1272,5-1273,5-1274,5-1275,5-1276,5-1277,5-1278,5-1279,5-1280,5-1281,5-1282,5-1283,5-1284,5-1285,5-1286,5-1287,5-1288,5-1289,5-1290,5-1291,5-1292,5-1293,5-1294,5-1295,5-1296,5-1297,5-1298,5-1299 RECV 5512 192.168.0.11 Accept-Encoding: gzip RECV 5512 192.168.0.11 Connection: close RECV 5512 192.168.0.11 SEND 5512 192.168.0.11 HTTP/1.1 200 Document follows SEND 5512 192.168.0.11 Server: BlackJumboDog Version 5.3.3.0 SEND 5512 192.168.0.11 MIME-Version: 1.0 SEND 5512 192.168.0.11 Date: Sat, 01 Oct 2011 22:00:54 GMT SEND 5512 192.168.0.11 Last-Modified: Mon, 29 Aug 2011 20:52:00 GMT SEND 5512 192.168.0.11 Accept-Range: bytes SEND 5512 192.168.0.11 Connection: Keep-Alive SEND 5512 192.168.0.11
一応、BlackJumboDogは動作を続け、他のアクセスも処理していましたが、さすがに50スレッドでバリバリアクセスされるとCPUの使用率はかなり高負荷の状態となってしまいます。
そこで、ApacheKiller特有のヘッダを見つけた時点で、セキュリティログに記録を残す機能と、攻撃元(IPアドレス)をACL(アクセスコントロール)の拒否リストに自動的に追加する機能を追加しました。
string range = recvHeader.GetVal("Range"); //指定範囲を取得する(マルチ指定には未対応) if (range.IndexOf("bytes=") == 0) { range = range.Substring(6); string[] tmp = range.Split('-'); //Ver5.3.5 ApacheKiller対処 if (tmp.Length > 20) {//Rangeの指定が20個もあれば十分怪しい? Logger.Set(LOG_KIND.SECURE, tcpObj,9000054, string.Format("[ Apache Killer ]Range:{0}", range)); AutoDeny(false, remoteIp); responseCode = 503; keepAlive = false;//切断 goto SEND; } }
オプション設定はこんな感じ(Ver5.3.5)
そして再び攻撃した際のBlackJumboDogのログと、CPUの状況は次のようになりました。
日時 種類 スレッドID 機能(サーバ) アドレス メッセージID 説明 詳細情報 2011/10/02 16:15:27 DETAIL 5516 Web-111:80 192.168.0.11 9000002 _subThread() started. count=2 Local=192.168.0.10:80 Remote=192.168.0.11:46514 2011/10/02 16:15:27 NOMAL 5516 Web-111:80 192.168.0.11 0000024 リクエスト HEAD / HTTP/1.1 2011/10/02 16:15:27 SECURE 5516 Web-111:80 192.168.0.11 9000054 Apache Killerによる攻撃の可能性があります [ Apache Killer ]Range:0-,5-0,5-1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,5-11,5-12,5-13,5-14,5-15,5-16,5-17,5-18,5-19,5-20,5-21,5-22,5-23,5-24,5-25,5-26,5-27,5-28,5-29,5-30,5-31,5-32,5-33,5-34,5-35,5-36,5-37,5-38,5-39,5-40,5-41,5-42,5-43,5-44,5-45,5-46,5-47,5-48,5-49,5-50,5-51,5-52,5-53,5-54,5-55,5-56,5-57,5-58,5-59,5-60,5-61,5-62,5-63,5-64,5-65,5-66,5-67,5-68,5-69,5-70,5-71,5-72,5-73,5-74,5-75,5-76,5-77,5-78,5-79,5-80,5-81,5-82,5-83,5-84,5-85,5-86,5-87,5-88,5-89,5-90,5-91,5-92,5-93,5-94,5-95,5-96,5-97,5-98,5- 〜〜〜〜〜〜〜略〜〜〜〜〜〜〜 1195,5-1196,5-1197,5-1198,5-1199,5-1200,5-1201,5-1202,5-1203,5-1204,5-1205,5-1206,5-1207,5-1208,5-1209,5-1210,5-1211,5-1212,5-1213,5-1214,5-1215,5-1216,5-1217,5-1218,5-1219,5-1220,5-1221,5-1222,5-1223,5-1224,5-1225,5-1226,5-1227,5-1228,5-1229,5-1230,5-1231,5-1232,5-1233,5-1234,5-1235,5-1236,5-1237,5-1238,5-1239,5-1240,5-1241,5-1242,5-1243,5-1244,5-1245,5-1246,5-1247,5-1248,5-1249,5-1250,5-1251,5-1252,5-1253,5-1254,5-1255,5-1256,5-1257,5-1258,5-1259,5-1260,5-1261,5-1262,5-1263,5-1264,5-1265,5-1266,5-1267,5-1268,5-1269,5-1270,5-1271,5-1272,5-1273,5-1274,5-1275,5-1276,5-1277,5-1278,5-1279,5-1280,5-1281,5-1282,5-1283,5-1284,5-1285,5-1286,5-1287,5-1288,5-1289,5-1290,5-1291,5-1292,5-1293,5-1294,5-1295,5-1296,5-1297,5-1298,5-1299 2011/10/02 16:15:27 SECURE 4808 Web-111:80 - 9000018 この利用者のアクセスは許可されていません(ACL) user:AutoDeny-10/2/2011 4:15:27 PM address:192.168.0.11 2011/10/02 16:15:27 DETAIL 5516 Web-111:80 192.168.0.11 0000004 response HTTP/1.1 503 2011/10/02 16:15:27 SECURE 3296 Web-111:80 - 9000055 【自動拒否】「ACL」の禁止する利用者(アドレス)に追加しました AutoDeny-10/2/2011 4:15:27 PM,192.168.0.11 2011/10/02 16:15:27 DETAIL 3296 Web-111:80 192.168.0.11 0000004 response HTTP/1.1 503 2011/10/02 16:15:28 SECURE 5824 Web-111:80 - 9000018 この利用者のアクセスは許可されていません(ACL) user:AutoDeny-10/2/2011 4:15:27 PM address:192.168.0.11 2011/10/02 16:15:28 SECURE 480 Web-111:80 - 9000016 このアドレスからの接続は許可されていません(ACL) address:192.168.0.11 2011/10/02 16:15:28 SECURE 4828 Web-111:80 - 9000018 この利用者のアクセスは許可されていません(ACL) user:AutoDeny-10/2/2011 4:15:27 PM address:192.168.0.11 2011/10/02 16:15:28 DETAIL 3296 Web-111:80 192.168.0.11 9000003 _subThread() stoped. count=2 Local=192.168.0.10:80 Remote=192.168.0.11:46513 2011/10/02 16:15:28 SECURE 480 Web-111:80 - 9000016 このアドレスからの接続は許可されていません(ACL) address:192.168.0.11 2011/10/02 16:15:28 DETAIL 5516 Web-111:80 192.168.0.11 9000003 _subThread() stoped. count=1 Local=192.168.0.10:80 Remote=192.168.0.11:46514 2011/10/02 16:15:28 SECURE 480 Web-111:80 - 9000016 このアドレスからの接続は許可されていません(ACL) address:192.168.0.11 2011/10/02 16:15:28 SECURE 480 Web-111:80 - 9000016 このアドレスからの接続は許可されていません(ACL) address:192.168.0.11 2011/10/02 16:15:28 SECURE 480 Web-111:80 - 9000016 このアドレスからの接続は許可されていません(ACL) address:192.168.0.11
だいたい、10〜60%で推移、特に問題なく使用できるようです。
【参考文献】
Apache killerは危険〜Apache killerを評価する上での注意〜 | 徳丸浩の日記