You are here:--脅迫性のDDoS攻撃、ランサムのDDoS

脅迫性のDDoS攻撃、ランサムのDDoS

脅迫性のDDoS攻撃、ランサムのDDoS(RansomDDoS)

ランサムウェア(Ransomware)に続いてランサム、DDoS(Ransom DDoS)まで猛威を振るっています。

ビットコインなどの金銭を支払わない場合には、ディドス攻撃に企業のIT電算インフラを麻痺させてサービスの運営に障害が発生しと脅迫することです。Kaspersky Labのは、最近「2017年第2四半期のDDoSレポート」を通じて、今年の第2四半期のトレンドで、このようなランサムディドスを挙げた。シスコはまた、「2017中期サイバーセキュリティレポート」を通じて脅迫性のDDoS攻撃が全世界的に著しく発生していると発表しました。

Dos、DDoS攻撃は、ハッカーの攻撃命令数減らすターゲットサーバーに多大な被害を与えることができる攻撃です。
ディドス攻撃に対して多く含まれては見ても詳細については、よく知らない人が多いです。

DosとDDosの概念と攻撃の種類、対応方法について説明します。

DoS(Denial of Service)

「サービス拒否攻撃」とも呼ばれ、通常のサービスを遅延させたり、麻痺させるハッキング攻撃にしたPCが別のサーバーを攻撃する1:1攻撃の構造を持っています。

DDoS(Distributed Denial of Service)

「分散型サービス拒否攻撃」とも呼ばれDoSの発展形で、多数のPCが一つのサーバーを攻撃するN:1攻撃の構造です。詳しく言えば、攻撃者が悪質なコードを流布して感染させたゾンビPCがあり、遠隔地でもゾンビPCを制御できるようにするC&Cサーバーがあって、攻撃者は、C&Cサーバーを介してゾンビPCが特定のシステムに同時多発的なトラフィックを発生させるように命令する構造を持っています。

 

◆ 攻撃のタイプ

1. TCP Syn Flood

TCP Syn Floodは、両方のホスト間でデータを送受信する前に、3-way handshakeの過程を介して接続を結ぶTCPの特性を利用した攻撃です。
そのため、TCP Syn Floodを知る前に、まずTCPの3-way-handshakeについて知っておく必要です。

TCP 3-way-handshake
3-way handshakeは信頼性の高い伝送のためにデータを送受信する前に、両方のホスト間の接続を結ぶプロセスです。

<動作過程>
1. ClientでServerへの接続を要求するため、SYN パケットを送信します。このときseq値を任意の値xに設定して送信します。
2.その後、Serverは、Clientに「リクエストも受けた〜」という答えのACKパケットと「お前ポートちょっと開けてくれ!」というSYNパケットをように送信します。
この時、ack値は、受信SYNパケットのseq値に1を加えた値であるx + 1を入れ、seqは、他の任意の値yを挿入します。
3. Clientは、SYN-ACKパケットを受けてサーバーに要求をよく受けACKパケットを送信します。もちろんこの時もack値をy + 1に送信します。

このプロセスが完了したら、ClientとServerは、接続を結んデータを送受信します。
ところがこのとき、ClientがServerからSYN-ACKパケットを受けてACKペキトルル送らなければどうなるでしょう?

Serverは、Half Open状態で一定時間の間ClientのACKパケットを待っているが、接続はBacklog Queueに積んであります。そうするうちにClientからACKパケットが来たら、接続を結ばだけ一定時間が経ってもACKパケットが来ない場合、この接続は、Backlog Queueから削除されます。

tcp syn floodは、この原理を利用した攻撃です。
もしBacklog Queueのサイズよりも多くの接続要求が発生した場合どうなるでしょう? Backlog Queueの接続が削除される前に、別の接続要求が継続して入ってきた場合、どうなるでしょう?

攻撃者がサーバーに多数のSYNパケットを送信するサーバーは、これに対する応答としてSYN-ACKパケットを送信するでしょうが、攻 撃者はACKパケットを送信しません。そうなれば、サーバーは、この接続をHalf Open状態でBacklog Queueに続い積み上げ置くされて、最終的にBacklog Queueがいっぱい他の一般的なユーザーが接続を要求すると、接続を受け入れられないサービス拒否状態になります。

 

2. UDP Flood

UDPの非接続、非信頼性の特性を利用した攻撃ではUDPでipとportを偽装しやすいという点を利用した攻撃です。攻撃者が不正なipとportでUDPパケットを送ると、パケットを受信した側では、パケットを正しく送ったICMP destination Unreachableパケットを送り、攻撃者が不正なUDPパケットを大量に送信した場合、ターゲットは、UDPとICMPパケットを処理するのにシステムリソースを消費することになります。

 

3. TearDrop
ネットワークを通過することができるパケットの最大の大きさを(MTU Maximum Transmission Unit)と呼ばれ、パケットのサイズがMTUを超える場合、パケットを裂くFragmentation(断片化)のプロセスを通過します。
受信側では、裂かれ、パケットを順序で受けることになる送信側で設定したoffset値を介してパケットを組み替えています。
TearDropは、このOffset値を操作して、サーバーが受信したパケットを組換えしないようにして、障害を発生させる攻撃です。

 

4. ICMP Flood

ICMP Floodの代表的な攻撃では、Smurf攻撃があります.Smurf攻撃は、攻撃者が任意のネットワークにsource IPをvictimのIPにしたICMP requestパケットをブロードキャストすると、ネットワーク内のホストは、ICMP requestパケットをvictimが送ったと思ってICMP reply応答をvictimに送信します。その後、victimは突然大量のICMP replyパケットを受信します。

* ICMP:他のホストorゲートウェイの間にネットワークエラーがあることを確認するためのプロトコル

 

5. Ping of Death
Pingのコマンドを使用ICMPパケットを通常のサイズよりも大きく作ってvictimに送る攻撃です。
前にも述べたように、パケットのサイズがMTUを超える場合、パケットを分けて送信しfragmentation過程を経たが、ICMPパケットのサイズがすごく大きい場合が多い量に分割されるものでありvictimは、そのパケットを処理するのにシステムリソースを消費することになります。

 

6. HTTP Flood
Webページを大量に依頼して、攻撃対象のWebサーバーがその要求を処理するためのサーバーのリソースを過度に使用するようにして、通常の要求を処理しないようにする攻撃です。

 

7. Cache Control Attack
HTTPヘッダのキャッシュオプションの値を操作して、Webサーバーに負荷を与える攻撃です。
一般的に、ユーザーがWebページを要求すると、応答の結果をキャッシュに保存して、同じページに戻って接続したときに、Webサーバーに再度要求することなく、キャッシュに保存された内容を出力して、不要な要求を減らし、処理速度を向上させます。
キャッシュオプションの値を「no-store」に設定すると、キャッシュに応答結果を保存せずに、毎回、Webサーバーに要求をして、サーバーに負荷が生じます。
また、キャッシュに保存された内容がまだ有効であるか、Webサーバーにを確認することを「検証」するために、キャッシュオプションの値を「must-revalidate」に設定すると、キャッシュに保存された内容を毎回再検証して、サーバーに負荷が生じます。

 

◆ 対応方法

Syn flooding
– バックログキューのサイズを増やす
sysctl-a|grep syn_backlog:バックログサイズを確認
sysctl-w net.ipv4.tcp_max_syn_backlog=1024:バックログサイズの変更

 

– Syncookie 設定

:Syncookieは、両方のホスト間の接続に関する情報を暗号化したものでsyncookieを設定するということは、3-way-handshakeの過程では、サーバーがclientからSYNパケットを受けて、SYN-ACKパケットを送信するときにSYNパケットのseq値にsyncookie値を入れることを言います。これにより、clientからACKパケットが来なくてもserverは待たずに、後でclientがack値にsyncookie+1を入れて送信する自分が持っているsyncookie値と比較して同じならば、接続を結んで通信されます。

syncookie設定する方法
sysctl -a | grep syncookie                          : syncookie 設定確認
sysctl -w net.ipv4.tcp_syncookies=1       : syncookie 機能有効

 

– ファイアウォールのIPあたりSYN要求に対するPPSしきい値の設定、最初のSYNパケットをDropして再要求パケット到達を確認
* PPS:帯域幅ごとに使用することができるパケットの最大数

– レジストリ値を変更(EnableICMPRedirect、SynAttackProtect、KeepAliveTime項目)

 

UDP/ICMP flooding
– ウェブサーバーまたはオペレーティング機器では、UDP/ ICMPトラフィックDROP設定
– Nullルーティングを介して攻撃トラフィックを仮想インターフェイスにルーティング
– 操作装置でInboundパケットしきい値の設定

Teardrop
– システムのオペレーティングシステムが脆弱性を持たないように、パッチなければならない
*原因は、WindowsおよびLinuxシステムのIPパケット組換えコードのバグにあったが、現在ほとんどのシステムでは、これらのteardrop攻撃に対して防御している

Smurf
– 各ネットワークルータからのIPブロードキャストアドレスを使用することができなく、あらかじめ設定

Ping Of Death
– パケットの組換え過程では、着信パケットのoffset値の合計を検査

HTTP flooding

– コンテンツごとに求めることができる回数に閾値を設定して、一定規模以上のリクエストをブロック
– 任意の時間に設定されたしきい値以上の要求が入ってきた場合は、そのIPアドレスを検出して、ファイアウォールのブロックリストに登録

CC Attack
– L7スイッチを利用して、HTTP HeaderのCacheControlに特定の文字列が含まれている場合は、IP接続をブロックする設定

 

◆ 攻撃の結果

tcp syn flooding

– netstat コマンド
: サーバーがSYN-RECV状態にACKパケットを待つことを確認することができます。

[email protected]:~# netstat -antop
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1454/mysqld off (0.00/0/0)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1129/sshd off (0.00/0/0)
tcp 0 304 10.10.2.85:22 10.10.2.122:55176 SYN-RECV 8527/sshd: plura [p on (0.01/0/0)
tcp 0 0 10.10.2.85:22 10.10.2.100:11936 SYN-RECV 30924/sshd: plura [ keepalive (4194.07/0/0)
tcp 0 0 10.10.2.85:22 10.10.2.122:55174 SYN-RECV 8357/sshd: plura [p keepalive (6913.81/0/0)
tcp6 0 0 :::80 :::* LISTEN 7018/apache2 off (0.00/0/0)
tcp6 0 0 :::22 :::* LISTEN 1129/sshd off (0.00/0/0)
tcp6 0 0 10.10.2.85:80 10.10.2.122:38486 FIN_WAIT2 – keepalive (210.71/0/0)
tcp6 0 0 10.10.2.85:80 10.10.2.122:39600 SYN-RECV 8353/apache2 keepalive (7175.96/0/0)
tcp6 0 0 10.10.2.85:80 10.10.2.122:39596 SYN-RECV 8350/apache2 keepalive (7175.96/0/0)
tcp6 0 0 10.10.2.85:80 10.10.2.122:39598 SYN-RECV 7021/apache2 keepalive (7175.96/0/0)
tcp6 0 0 10.10.2.85:80 10.10.2.122:39602 SYN-RECV 7022/apache2 keepalive (7175.96/0/0)
tcp6 0 0 10.10.2.85:80 10.10.2.122:39594 SYN-RECV 8585/apache2 keepalive (7175.96/0/0)

 

udp flooding

– ping コマンド
:攻撃後、サーバーがICMPパケットを処理するのに、pingコマンドを送信したときの応答時間がますます長くなることを確認することができます。

[[email protected] ~]# ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=13 ttl=63 time=13.4 ms
64 bytes from 192.168.10.10: icmp_seq=14 ttl=63 time=18.6 ms
64 bytes from 192.168.10.10: icmp_seq=15 ttl=63 time=12.9 ms
64 bytes from 192.168.10.10: icmp_seq=16 ttl=63 time=16.3 ms
64 bytes from 192.168.10.10: icmp_seq=17 ttl=63 time=12.0 ms
64 bytes from 192.168.10.10: icmp_seq=31 ttl=63 time=137 ms
64 bytes from 192.168.10.10: icmp_seq=72 ttl=63 time=149 ms
64 bytes from 192.168.10.10: icmp_seq=221 ttl=63 time=144 ms
64 bytes from 192.168.10.10: icmp_seq=251 ttl=63 time=146 ms
64 bytes from 192.168.10.10: icmp_seq=283 ttl=63 time=150 ms
64 bytes from 192.168.10.10: icmp_seq=390 ttl=63 time=167 ms
64 bytes from 192.168.10.10: icmp_seq=395 ttl=63 time=140 ms
64 bytes from 192.168.10.10: icmp_seq=478 ttl=63 time=155 ms
64 bytes from 192.168.10.10: icmp_seq=526 ttl=63 time=134 ms
64 bytes from 192.168.10.10: icmp_seq=581 ttl=63 time=143 ms
64 bytes from 192.168.10.10: icmp_seq=745 ttl=63 time=141 ms
64 bytes from 192.168.10.10: icmp_seq=794 ttl=63 time=148 ms
64 bytes from 192.168.10.10: icmp_seq=879 ttl=63 time=142 ms
64 bytes from 192.168.10.10: icmp_seq=881 ttl=63 time=140 ms
64 bytes from 192.168.10.10: icmp_seq=1088 ttl=63 time=148 ms
64 bytes from 192.168.10.10: icmp_seq=1256 ttl=63 time=160 ms
64 bytes from 192.168.10.10: icmp_seq=1266 ttl=63 time=144 ms
64 bytes from 192.168.10.10: icmp_seq=1328 ttl=63 time=144 ms
64 bytes from 192.168.10.10: icmp_seq=1359 ttl=63 time=146 ms

 

http flooding
– apache의 access_log
:access_logのログを介して同じipとほぼ同時間帯に続けて接続したことを確認することができます。

192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?HJJFE=KCYKMVXK HTTP/1.1” 301 252 “http://www.usatoday.com/search/results?q=VMQTL” “Opera/9.80 (W192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?HJJFE=KCYKMVXK HTTP/1.1” 301 252 “http://www.usatoday.com/search/results?q=VMQTL” “Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?XPBAVQIQE=UILLDFXMV HTTP/1.1” 301 257 “http://www.usatoday.com/search/results?q=UXQHNESAVK” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?MDEZZ=TYI HTTP/1.1” 301 247 “http://engadget.search.aol.com/search?q=MFGRZD” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?IBRC=KWFJVJF HTTP/1.1” 301 250 “http://www.google.com/?q=MOFCA” “Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress/?JJTRXLEVV=ZVVFXWEOWC HTTP/1.1” 500 251 “http://192.168.0.8/QDMKPLOHYM” “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?ENYWOHXTQR=DSOS HTTP/1.1” 301 253 “http://engadget.search.aol.com/search?q=HYZQLIY” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?RGXR=KOE HTTP/1.1” 301 246 “http://192.168.0.8/LNQYSU” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?MQR=ZSQTJLFSBN HTTP/1.1” 301 252 “http://192.168.0.8/QQJQIPQ” “Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?BMWRXJSGC=ASIZB HTTP/1.1” 301 253 “http://www.usatoday.com/search/results?q=EJUSQMGM” “Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?XNPHAN=PFASYHMNPV HTTP/1.1” 301 255 “http://engadget.search.aol.com/search?q=DXRHLFCFYJ” “Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress?VJCH=WRP HTTP/1.1” 301 246 “http://www.google.com/?q=GYHRGQTDD” “Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress/?FDE=OEPTDTK HTTP/1.1” 500 251 “http://www.google.com/?q=YFDAHCAI” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress/?NBU=XNFYUYYUD HTTP/1.1” 500 251 “http://192.168.0.8/BVMFYZVOG” “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1”
192.168.0.4 – – [18/Jul/2017:14:41:59 +0900] “GET /wordpress/?UTKXMG=NAMO HTTP/1.1” 500 251 “http://www.usatoday.com/search/results?q=YMSGOFP” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)”
192.168.0.4 – – [18/Jul/2017:14:41:58 +0900] “GET /wordpress/?HYSS=XPRNNT HTTP/1.1” 500 251 “http://engadget.search.aol.com/search?q=WAKAZYH” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)”

 

– mod_evasive
:攻撃タイプと攻撃したip、時間を知ることができます。

[[email protected] mod_evasive]# ls -l /var/log/mod_evasive
합계 0
-rw-r–r–. 1 apache apache 0 7월 24 13:17 dos-192.168.0.4

 

By |2018-07-03T10:25:47+00:00August 18th, 2017|Categories: カラム|0 Comments

About the Author: