Skip to content

security-anthem/DC-p0t

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DC-p0t (Hurry Potter)

DC-p0tは,攻撃環境を再現する高対話型のハニーポットです. Docker上にWebサーバまたはDNSサーバを立ち上げ,tcpdumpを用いて通信を監視します. また,通信ログの可視化も同時に行います.

利用例

Docker上でbind9を立ち上げた状態で,google.comのDNSを問い合わせた際の端末およびWiresharkの画面 端末

Wiresharkでtcpdump.pcapを開いた画面 Wireshark

CVE-2011-3192を利用したexploit codeを用いたDoS攻撃の結果 cve-2011-3192

VS.

 既存のハニーポットとして,T-pot,Linuxコンテナ技術を利用したSHHハニーポット,BW-Potが挙げられる.

 T-potはDockerを利用した低対話型ハニーポット統合管理OSの名称である.既存のハニーポットと,IDSを利用できるツールを組み合わせて,各ハニーポットのログを統合管理している.様々なハニーポットをDocker上で動かしログを収集できるが,運用するにはT-pot提供元から配布されるOSディスクイメージを利用する必要があるため,短時間で容易に環境を構築できるとは言い難い.

Linuxコンテナ技術を利用したSHHハニーポットは,攻撃者が実行できるアクションが実際のLinuxシステムとほとんど同等である高対話型の側面を持つとともに,OSレベル仮想化によるホストからのファイルシステムの隔離と,オーバヘッドの少ないコンテナの生成,破棄が可能である低対話型の側面を持つハニーポットである.このハニーポットでは,実際のLinuxシステムで提供されているコマンドを扱うことができるため,実環境に近い状態のサーバを用いることができる.一方で,ログの収集方法については,コマンドの履歴やファイルの抽出など,一般的なハニーポットと同様の機能しか有していないため,具体的な攻撃内容を知ることは難しい.

BW-Potは,HTTPまたはHTTPSを対象とした高対話型ハニーポットである.侵害されやすいwebアプリケーションを構築することで,攻撃者からのアクセス観察することができる.しかし,収集したログから,攻撃によって何が起きたのか判断するのが難しい.

動作確認した環境

ホストOS Windows 10 Pro
VMM Oracle VM VirtualBox
ゲストOS Ubuntu 20.04.1

Windows 10 で,Oracle VM VirtualBoxをインストールし, VirtualBox上にUbuntuをインストールした環境を用意する.

インストール方法

  1. BPF toolsのインストール
sudo apt -y install bpfcc-tools
  1. Dockerのインストール 参考URL: https://docs.docker.com/engine/install/ubuntu/
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io

ディスク容量について聞かれた場合,「Y」を入力する.

使い方

  1. インストール方法を参考に,環境構築を行う.

  2. 設定ファイルの修正

    setup/init.jsonを以下のように修正する.

{
    "app":"apache", 
    "app_version": "2.4.7"
}

appには,インストール対象のプログラムの名前,app_versionにversionの記号を入力する.

  • init.jsonの記述例を以下のファイルに記述している.これらを写しても良い.
サービス名 ファイル名
bind9 setup/sample/init_bind9_sample.json
Apache HTTP Server setup/sample/init_apache_sample.json
php setup/sample/init_php_sample.json

現在,利用可能なプログラムは,以下の通り

apache2
apache2 + php
bind9

apache2のバージョン名は,以下のURLで取得できるバージョン名を指定する.

https://archive.apache.org/dist/httpd/

phpのバージョン名は,以下のURLで取得できるバージョン名を指定する.

https://www.php.net/distributions/

bind9のバージョン名は,以下のURLのリポジトリのタグ名を指定する.

https://gitlab.isc.org/isc-projects/bind9

  1. 実行
./start.sh

dockerのWebサーバにhttp://localhost:8080 でアクセスできる。

  1. 終了
./stop.sh
  1. ログの確認

これで,tcpdump.pcapをwiresharkなどで開けば通信ログを確認できる。

また,docker_diff_result.txtに変更があったディレクトリやファイルの一覧が保存される. さらに,docker_logに変更のあったファイルが保存される.

ログの内容 ファイル名 収集方法
Dockerが関わる通信トラフィックのログ log/packet/tcpdump.pcap tcpdumpでdocker0をキャプチャ
コンテナで起動したプロセスのPIDとプロセス名 log/ps_monitor.log execveシステムコールをホストでフックすることでプロセスの生成を監視
コンテナ起動中に追加や修正されたファイルの一覧 log/docker_diff_result.log コンテナ停止直前にdocker diffで取得
コンテナ起動中に追加や修正されたファイル log/docker_log/* docker diffで取得したファイルをdocker cp で取得
コンテナ起動中に出力された標準出力および標準エラー出力 log/docker_logs_result.log コンテナ停止直前にdocker logsで取得

License

MWS Cupの規定がある場合は,MWS Cupの規定に従う. 規定が無ければMIT Licenseを適用する.

Author

MWS Cup 2020 セキュリティ讃歌

About

Docker Container Honeypot for Vulnerability Verification

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published