hacktricks/forensics/basic-forensic-methodology/docker-forensics.md

6.1 KiB
Raw Blame History

Docker Forensics

{% hint style="success" %} AWSハッキングの学習と練習:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングの学習と練習: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksのサポート
{% endhint %}

コンテナの変更

あるDockerコンテナが侵害された可能性があるという疑いがあります

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
cc03e43a052a        lamp-wordpress      "./run.sh"          2 minutes ago       Up 2 minutes        80/tcp              wordpress

あなたは簡単に次のコマンドで、このコンテナに対してイメージに関して行われた変更を見つけることができます:

docker diff wordpress
C /var
C /var/lib
C /var/lib/mysql
A /var/lib/mysql/ib_logfile0
A /var/lib/mysql/ib_logfile1
A /var/lib/mysql/ibdata1
A /var/lib/mysql/mysql
A /var/lib/mysql/mysql/time_zone_leap_second.MYI
A /var/lib/mysql/mysql/general_log.CSV
...

前のコマンドで C変更 を意味し、A,追加 を意味します。
もし /etc/shadow のような興味深いファイルが変更されたことがわかった場合、悪意のある活動をチェックするためにそのファイルをコンテナからダウンロードできます:

docker cp wordpress:/etc/shadow.

あなたは新しいコンテナを実行し、ファイルを取り出すことで、元のものと比較することもできます。

docker run -d lamp-wordpress
docker cp b5d53e8b468e:/etc/shadow original_shadow #Get the file from the newly created container
diff original_shadow shadow

もしいくつかの怪しいファイルが追加されたとわかった場合は、コンテナにアクセスして確認できます:

docker exec -it wordpress bash

画像の変更

エクスポートされたDockerイメージおそらく.tar形式)が与えられた場合、container-diffを使用して変更の概要を抽出できます。

docker save <image> > image.tar #Export the image to a .tar file
container-diff analyze -t sizelayer image.tar
container-diff analyze -t history image.tar
container-diff analyze -t metadata image.tar

その後、イメージを展開してブロブにアクセスし、変更履歴で見つけた疑わしいファイルを検索できます:

tar -xf image.tar

基本的な分析

実行中のイメージから基本情報を取得できます:

docker inspect <image>

あなたはまた、次のようにして変更履歴の要約を取得することもできます:

docker history --no-trunc <image>

あなたはまた、次のようにしてイメージからdockerfileを生成することもできます:

alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage -sV=1.36 madhuakula/k8s-goat-hidden-in-layers>

Dive

Dockerイメージ内の追加/変更されたファイルを見つけるためには、diveリリースからダウンロード)ユーティリティを使用することもできます。

#First you need to load the image in your docker repo
sudo docker load < image.tar                                                                                                                                                                                                         1 
Loaded image: flask:latest

#And then open it with dive:
sudo dive flask:latest

これにより、Dockerイメージの異なるブロブをナビゲートして、変更/追加されたファイルを確認できます。は追加されたファイルを、黄色は変更されたファイルを示します。Tab キーを使用して他のビューに移動し、スペース キーを使用してフォルダを折りたたんだり開いたりします。

これにより、イメージの異なるステージのコンテンツにアクセスできなくなります。それを行うには、各レイヤーを展開してアクセスする必要があります
イメージが展開されたディレクトリから、イメージのすべてのレイヤーを展開することができます。

tar -xf image.tar
for d in `find * -maxdepth 0 -type d`; do cd $d; tar -xf ./layer.tar; cd ..; done

メモリからの資格情報

ホスト内でdockerコンテナを実行すると、ホストからps -efを実行するだけでコンテナで実行中のプロセスを見ることができます。

したがってrootとして、ホストからプロセスのメモリをダンプして、次の例のように資格情報を検索することができます。