4ensiX

4ensiX

Forensics専門でなければ、CTFはDFIRの勉強にほとんど役立たないことをを知ったこの頃

Technical - ENISA を読んだ覚書

 以前に、Forensics学ぶならTechnical - ENISAが良いというようなことを聞いていて遂に取り組む時が来た。以下は、インシデントレスポンス未経験な学生が取り組んだ覚書である。ときどき、取り組むタイミングによってモチベに差があったので本当に適当になってしまっている部分はご了承ください。正直、バリバリ解析するみたいなものではなく、管理ツールの使い方のようなトレーニングはあまり真面目に取り組んでいません。

取り組む前にやるべきこと

Handbookは事前にDLしといた方が良い

見たいときに見れるように手元にあった方が良いし、リンク踏んでページ移動した場合とか一々読み込むよりは良いかと。

資料は取り組む20時間前にはDL始めとく

Technical - ENISAの資料、特にハンズオンのためのovaがある場所はDLめっちゃ時間かかるのでDLは早めに。参考までに、自分の環境だと一番重かったovaが19hくらい。個々のネット環境の差の所為もあるかもしれないが、自分の場合はpingで平均295ms。ブラウザでのダウンロードは全く上手くいかず、wgetでユーザエージェントをOpera 11.0にするのが一番安定した。何故!?

失敗したときのために、こまめに仮想マシンのsnapshotを取る

割と容量喰うので不要なものは消した方が良いが、あるときと無い時の絶望感の差はハンパない。

Technicalのリスト

レーニングはこの順番で進めていくことが前提となっている。後半に進むに連れて、テキストにある通りに上手くいかない度が増していく気がする。

  1. Building artifact handling and analysis environment
  2. Processing and storing artifacts
  3. Artefact analysis fundamentals
  4. Advanced artefact handling
  5. Introduction to advanced artefact analysis
  6. Dynamic analysis of artefacts
  7. Static analysis of artefacts
  8. Forensic analysis: Local incident response
  9. Forensic analysis: Network incident response
  10. Forensic analysis: Webserver analysis
  11. Developing Countermeasures
  12. Common framework for artefact analysis
  13. Using indicators to enhance defence capabilities
  14. Identification and handling of electronic evidence
  15. Digital forensics
  16. Mobile threats incident handling
  17. Mobile threats incident handling (Part II)
  18. Proactive incident detection
  19. Automation in incident handling
  20. Orchestration of CSIRT Tools New
  21. Introduction to network forensics
  22. Honeypots
  23. Vulnerability handling
  24. Presenting, correlating and filtering various feeds

1. Building artifact handling and analysis environment

 様々な解析を行うための環境を整える。Handbookの通りFigure1のような環境を構築していく。Styxマシンはstyx32.ovaとして配布されるが、winboxとなるwindows7は自分でイメージを取得する必要がある。GetMyOSあたりが良いのではないだろうか。ちなみにハンズオンの想定はwindows7の32bitである。

f:id:Zarat:20200721161852p:plain
画像は(Building artifact handling and analysis environmentのHandbook)より抜粋
資料には特に記載が無いが、winboxは拡張子の表示やwindows updateの停止等の設定を施すとやりやすい。
 初めは勘違いしていたが、ここでの設定を完璧に終えなければ追々のトレーニングが全く進められない訳ではない。完璧にできれば、良いに越した事は無いがモノによってはトレーニングの一節でちょっと使うだけのものもある。本当に行き詰ってしまった場合は一度styx32が配布資料に含まれていないものに取り組んでみたりすることで気分転換も良いかと。
 基本的には資料通り設定すれば問題ないが、ときどきタイポがあるので注意。あと、Adobe Acrobat Readerでhandbookを開くと表示倍率によっては_が出ないことがあった。

気になった点

i. DNSの設定関連

 netsimとtorの設定を済ませたあたりで起動時にエラーが出る。おそらく、netsimとtorのDNSが競合してるのだと考える。なんとなく、netsimの方が優先度高めな気がしたのでtorrcを気休めで変更した。全く分かっていないので、気になることがあれば教えてください。

(snip)
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 127.0.0.1
TransListenAddress 10.0.0.1
#DNSPort 53
#DNSListenAddress 127.0.0.1
#DNSListenAddress 10.0.0.1


ii. Cuckooの設定

 結論から言うと諦めた。とりあえず、cuckooのwinboxとの連携が全く上手くいかなかった。自分が調べた限りでは二つの問題により上手くいかなかったと考える。

  • 設定時に記述されているipが間違っている。
    タイポ
  • libvirtvirtualboxのバージョン
     このハンズオンでは、libvirtを通してvirtualbox apiでwinboxを操作する設定を行う。ここで、styx32のlibvirtと今自分が利用しているvirtualboxのバージョンが対応しているものでなければ動作しない。じゃあ、バージョン合わせればいいじゃないかと思われるでしょう。まず、この資料が作成されたのは2014年らしい。つまり、色々当時の最新設定が想定なので最新のvirtualboxに合わせて最新のlibvirtを入れるとなるとライブラリの更新であったり何か他の依存関係ぶっ壊しそうでよく分からなかった。(調査不足)
    ではvirtualboxのダウングレードはどうかというと、自分は複数のマシンでExtension Pack使用民なのでメンドイでした。
     結局、後のトレーニング資料を見るとちょっとしか使わないじゃんっと思ったので放棄。

2. Processing and storing artifacts

 styx32にspam honeypotのShivaマルウェアスクリプトの管理を行うViperを設定して、簡単なspamメールの解析を行う。
 管理ネットワークに、自前のメールサーバがあればspam mailから脅威を事前に検知するというのもあるらしい。攻撃検知であったり侵入検知であったりも何らかの手がかりは残りそう。

3. Artefact analysis fundamentals

 用意されたマルウェアの簡単な静的解析、動的解析、ネットワーク解析、自動解析を行う。
 静的解析では、アンパックから始まり、読み取れる文字列等から機能の推測を行う。デコンパイラ等を使うまで深いところまでは踏み込まない。
 動的解析では、プロセスを監視しながら実際にマルウェアを実行することでどのような影響をもたらすのかを見ていく。デバッガ等を用いる解析は行わない。
 ネットワーク解析では、マルウェア実行中のパケットキャプチャ等からマルウェアの影響を確認する。
 自動解析はCuckooを用いて行う。自分は、やってない。ちなみにこれ以降Cuckooは出てこない。

4. Advanced artefact handling

 volatilityでメモリフォレンジック!  メモリダンプの取得から始まり、与えられたwindowslinuxのメモリダンプの解析を行う。説明は丁寧だが、ハンズオンで行うことは何だか中途半端な気が。

気になった点

i. winpmemをwinboxで試してファイルを転送するとき

 netcatで転送するみたいなことが書いてあったが、winbox⇔styx32間では上手くいかなかったのでファイル転送はlabスクリプトftpを使用した。

ii. 2.2.2.3 Task 1.2.3 Building a Volatility profileにて

 記憶が確かなら、 /usr/src/volatility-tools/linuxではなく、 /home/exercise/volatility-tools/linuxだった。

iii. volatilityのプロファイル追加

 プロファイルのディレクトリは/usr/lib/python2.7/dist-packages/volatility/plugins/overlays/linux
余談だが、volatilityのOSプロファイルをいくらか公式が公開している。
volatilityfoundation/profiles: Volatility profiles for Linux and Mac OS X

 確か、/home/enisa/enisa/ex4/vol-profilesにすでにハンズオン用のプロファイルがあったような気がする。

5. Introduction to advanced artefact analysis

x86の基本知識が色々学べる。レジスタであったり、命令であったり様々。ついでに、ツールの名前だけ紹介されている。ここで挙がっていたツールは、OllyDbg, Immunity Debugger, WinDbg, WinAppDbg, IDA, radare2.

6. Dynamic analysis of artefacts

 基本的にはOllyDbgの動的解析における使い方講座。それに絡めて、簡単な手動アンパックであったり、アンチデバッグの紐解き方、プロセスインジェクションについて触れている。急に難易度上がった感。マルウェアを取ってきて、一緒に解析してみようというようなハンズオンの部分は取得方法が分からなかったのでやっていない。所々言われているものが見つからず辛い。

7. Static analysis of artefacts

 静的解析におけるIDAの使い方講座。call graphsやcross referencesを眺めながら解析していくのが面白い。 典型的なanti-disassemmbly techniqueが施されているプログラム解析の紹介は最も面白いところだったが、どこかでプログラムが配布されているのか・見るだけなのか分からないが手元で解析したかった。やっぱり全体的に、テキストで言われている場所と一致するものを手元で見つけるのが辛い。

8. Forensic analysis: Local incident response

 あるデータ漏洩が発生したシナリオが用意され、8. Forensic analysis: Local incident response,9. Forensic analysis: Network incident response,10. Forensic analysis: Webserver analysisと三部構成で調査を行っていく。  第一部のこちらでは、問題が確認されたworkstation1のメモリフォレンジック、ディスクフォレンジックから感染源となったサイトの特定等を行う。

9. Forensic analysis: Network incident response

 インシデント調査の第二部であるこちらでは、ネットフローダンプやdhcpサーバの解析から他の影響を探っていく。

10. Forensic analysis: Webserver analysis

 インシデント調査の第三部であるこちらでは、三つのwebサーバの調査を行う。最終的に見えてきた全貌はなんだが納得いかないような、ご都合主義なような気がするがシナリオを通して実践的なフォレンジック調査の流れを学べたのはとても良かった。

11. Developing Countermeasures

 Snortシグネチャ作成とYaraルールの作成が学べる。Snortシグネチャを作成してテストしているが、資料に書いてあるものはシグネチャが作成上手くいくためのテストケースを作成しているような気がする。

気になった点

作成したSnortルールの適用

ルールを適用するために/home/enisa/enisa/ex5/snort/snort.test.confにて$RULES_PATH=/home/enisa/enisa/ex5/snortと設定しないと上手くいかなかった。

12. Common framework for artefact analysis

 MANTISCRITsの基本的な使い方を学ぶ。こういう収集した情報を分析して脅威の監視を行うようなツールは初めて触ったのでとても新鮮であった。実際の現場でもこのようなもので情報共有が行われているのだろうか。何か色々上手くいかなかった気がするが覚えていない。

13. Using indicators to enhance defence capabilities

 再びCRITsの登場。上手くいったり、上手くいかなかったところが所々あった気が。

14. Identification and handling of electronic evidence

 デジタルフォレンジックに関して理論的な概要説明。

15. Digital forensics

 銀行システムでの顧客対応の一環を例に挙げたデジタルフォレンジック演習。webサーバのアクセスログの解析やZeusに感染したPCのメモリフォレンジックを行う。VM How Toのリンクにあるように、/home/enisa/setup.shを走らせてから/home/enisa/Desktop/Training-Material/Dig_For_and_Handl_Evにハンズオンのための資料が現れる。

気になった点

i. 5 Task 2 – Identify other attacked customers based on these characteristics

  1. $ for i in `cat access.log | cut -f 1 -d ' '`;do geoiplookup $i;done|sort|uniq| wc -lにて ' 'の間は半角スペース在り。
  2. 薄々勘づかれていた通り、$ grep Mozilla access.log | grep 'ru;' | grep \"\'$ cat access.log | grep 'ru;' | grep \"\'の結果が等しい。

ii. 6 Task 3 – Hands-on analysis of memory process dump

  1. volatilityはコマンドとして登録されており、volatilityコマンドで利用できる。
  2. zeusscanプラグインはすでに導入されており、例えばココでは $ volatility -f memdump.raw zeusscan1 のように利用可能
  3. key.txtの変換が以下のようにしないと上手くいかなかった。
    $ cat key.txt | cut -d ' ' -f 2-19 | xxd -r -p > key.bin
    ' 'は半角スペース在り。

    余談

     今回の演習で出てきたUser-Agentは何か色々怪しすぎてオカシイでしょとか思っていたが、今のChromeの場合 Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Mobile Safari/537.36であったし、今後Chromeではバージョン、OS問わず同じUser-Agentを返すようになるらしい。詳細はおググりください。

16. Mobile threats incident handling

 モバイルのフォレンジックで、apkファイルの解析の基本について学べる。
 AVDで動かして、apkをデコードして少し機能を弄ってみたり、ビルドして再び動かしネットワークトラフィックを見たりした上でdexからjar変換してapk解析等を行う。

気になった点

i. [3.5.1.1 Open Android SDK Manager]
Android SDK ManagerのPackagesのUpdates/Installedに関して

 Handbookの方では、API15を利用していたので同じようにこれを導入。さらに、Toolsについては文句言われたので色々必要なものを導入。

ii. 3.5.1.5 Create an AVD named “SimpleLockerAVD” using avd manager

 Deviceの作成時に容量が足りなく作成できない状態になってしまった。/home/enisa/setup.shを実行すると、仮想マシン[enisa-main.ova]は他のトレーニングの資料も作成される。取り組む前に別のトレーニングのファイルは消しておいた方が良い。
 さらに、AVD作成時のRAMが少ない所為か上手くいかなかったのでAVDのRAMを1024MBし、その上で改めてVM自体のメモリを4096MBに増やした。

iii. 3.5.1.6 Add Hardware and open AVDs

 大抵の人は必要だと思われるが、64bitマシンを利用している場合 ./emulatorの引数には-force-32bitが必要となるらしい。

17. Mobile threats incident handling (Part II)

 モバイルフォレンジックに関してAndoroidに加え、軽くiosの解析のハンズオンも行う。内容としては、モバイルの脅威やRooting、Jail-breaking等モバイルの様々な知識にも触れられる。
 スマホのメモリフォレンジックもあるが話だけでほとんど触れない。iosのバックアップからファイルの解析があるが、イメージの取得のような方法が見てみたかった。
 マルウェアアプリの解析があるが、浅すぎて物足りないと感じた。

気になった点

system.imgの取得からfile carving

 Deviceが事前に用意されていればよかったが自分で作らないといけなさそう。自分が探した限りでは見つからなかったので誰か見つけたら教えてください。自分で作ったイメージを使うということはfile carvingは同じように上手くいかないしjpegがイメージ内に無いといけない。 そりゃそうか。

18. Proactive incident detection

 公開情報から脅威に関する情報を収集する方法に関する話。AbuseHelperの使い方について学ぶ。
 ここら辺から、資料通りの演習の再現が上手くできなくなってくる。仮想マシンのパスワードが分からないのでUbuntu 18.04: 忘れたパスワードを再設定する - Narrow Escapeのように再設定する。

19. Automation in incident handling

 ログを見る時はgrep,awk,sort,wcのようなコマンドを使って解析してみよう。

20. Orchestration of CSIRT Tools New

 [12.Common framework for artefact analysis]よりも話を広げたもの。MISP,Elasticsearch,TheHive,IntelMQ等の基本的な使い方についてのトレーニング。正直個人的にあまり気乗りしていなかったので、IntelMQが上手くいかなかった時点で止めてしまった。
 MISP,Elasticsearchに関しては起動を確認したが、IntelMQは起動できず、TheHiveは確認すらしていないので分からない。

気になった点

4.4.2 Adding data to the cluster

 Elasticsearchにデータを追加するためのコマンドを実行すると

{"error":"Content-Type header [application/x-www-form-urlencoded] is not support

となってしまった。何故かContent-Typeが上手くしていできていない模様。なので、

$ curl -XPOST http://elasticsearch.enisa.ex/logs/request/1 -H "Content-Type: application/json" -d @r1.txt

r1.txtにrequestをテキストファイルに書き込んでやると上手くいく。

21. Introduction to network forensics

 ネットワークの証拠収集についてハード・ソフトを通した話、証拠保全のための設定や情報収集に有効なログ等ネットワークフォレンジックに関わる知識、ツール、ハンズオンを含め盛りだくさんなトレーニング。
 ハンズオンは3種類あり、ICS/SCADA環境での独自の通信プロトコルDNS exfiltration、VPNを介したアクセスの解析を行う。とにかく楽しい。

気になった点

i. ICS/SCADA環境での解析

  1. normal.pcap/home/exercise/traffic/normal.pcapであり、以降も/trraffic以下にファイルがある。
  2. INF5.1.ovaは、まさかのドイツ語キーボード。zとyが逆?ハイフンは/,スラッシュはshift+7,イコールはshift+0,シングルクォーテーションはshift+]

ii. DNS exfiltration

  • squid.confの設定にて  変な改行があるように見えるが
http_port 0.0.0.0:3128 ssl-bump cert=/usr/local/squid/ssl_cert/squid.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
sslcrtd_program /usr/local/squid/libexec/ssl_crtd -s /var/lib/ssl_db -M 4MB
acl step1 at_step SslBump1
acl exceptions ssl::server_name .10.1.1.1
ssl_bump splice exceptions
ssl_bump peek step1
ssl_bump bump all

 これが正しい。

iii. [5.2.6.5 MISP Web Interface]

 MISPの [Search Attributes]の[Containing the following expressions]に

$ awk -F, '{print $20}' firewall.log | grep -v "10.*" | sort | uniq

 の結果を張り付ける。

iv. sargへのアクセスはsarg.localへ

v. [p176]にて

egrep "[a-zA-Z0-9\\]{30,63}" bind.log.2 | wc -l | uniq

は間違い。

egrep "[a-zA-Z0-9\\]{40,63}" bind.log.2 | wc -l | uniq

これが正しい。 何故40から30に減った?

22. Honeypots

 ブラウザエミュレータのようなThug- Client-side honeypot、マルウェア収集に使われるらしいDionaea - Server-side honeypot、wowhoneypot見たいなHTTPアクセスを観測するGlastopf - Server-side honeypotに触れる。
 実際に運用するわけではないので、特にドキドキもなく物足りないのは仕方がない。学生であれば、HoneypotはAzure for Students – 無料アカウント クレジット | Microsoft Azureで試すのがおススメ。

23. Vulnerability handling

 運用しているサービスで脆弱性が見つかった場合どのような対応を取るかに関して理論的な話。

24. Presenting, correlating and filtering various feeds

 Elasticsearchを使う。何度も同じようなトレーニングをやるということは重要なことなのだろうか。

個人的に楽しかったトレーニング(満足度順)

  1. Introduction to network forensics
  2. Mobile threats incident handling (Part II)
  3. Advanced artefact handling
  4. Artefact analysis fundamentals
  5. Forensic analysis: Local incident response
  6. Forensic analysis: Webserver analysis
  7. Mobile threats incident handling
  8. Static analysis of artefact
  9. Dynamic analysis of artefacts
  10. Forensic analysis: Network incident response
  11. Developing Countermeasures
  12. Digital forensics
  13. Processing and storing artifacts
  14. Building artifact handling and analysis environment
  15. Introduction to advanced artefact analysis
  16. Identification and handling of electronic evidence

感想

 Technical - ENISAの魅力は解析技術だけではなく、インシデント情報の管理であったりDF単体でなくDFIR全体に触れることができるところだと思います。まあ、そもそもCERT staffのための資料なのであたりまえと言えばあたりまえですが。
 Handbookは全て、提供された資料を用いて資料をトレーニングを行う場合はこのようにやってくださいというような体で書かれていると思います。そのおかげで「ココではこのような問いかけをしてください」というような説明があり、そこではそのような考え方を持てば良い等と学ぶことができますし、解答もついているので一石二鳥な気がします。しかし、後半の資料では何だか上手くいかないことが少し残念です。自分の力不足の所為でもありますがね。
 余すところ無くトレーニングから学びを得るためには参照リンクを沢山チェックするのがおススメです。