4ensiX

4ensiX

FPと言ったものはFPを選んだが表示はTPになっていることに気づいた。

Blue Team Level 1 gold coinを獲得しました。

BTL1(Blue Team Level 1)の概要

名前の通りBlue Teamのための資格であって、

  • フィッシング攻撃の分析と対応
  • デジタル証拠の収集および分析するフォレンジック調査
  • SIEMプラットフォーム(splank)を使用して悪意のあるアクティビティの調査
  • マルウェア感染を含むログおよびネットワークトラフィック分析

等々の入り口のような実践的なスキルを学ぶことができる。

試験の準備

申し込み

通常価格は、£399です。399ポンドで高いなぁと常々思っていたが、ブラックフライデーのときに100ポンド安かったので買ってみました。

申し込み段階での自身のBlueTeam関連スキル

分かりやすい?ものだけピックアップ

  • CTFはForensicsだけを狙って1年半くらい集中していた
  • Enisa - Technicalにある無料コンテンツは、全て取り組み済み
  • CFReDSのHacking Caseだけは完走
  • Autopsy 8-Hour Online Trainingを完走

申し込み後にアクセスできるコンテンツ

購入後に、コンテンツやトレーニングコンテンツごとに用意されたラボ環境へのアクセスは今は4か月可能らしい。自分の場合には、たしか購入時に30日以内にコンテンツアクセスを始めるかどうか選べてすぐに始める方を購入した。その後、買ったまま他のコンテンツで学習していたので放置状態になり3か月くらい経って、そろそろやろうと思ったときにBTLの試験形態やコンテンツが大きく更新され、それに伴ってアクセス期間も3か月伸びていたのでさらに放置して、最後の2週間くらいで頑張りました。
アクセスできる学習コンテンツは、BlueTeamやサイバーセキュリティに関連する基礎知識や実践的なスキルの説明を読むだけのインプット系、そしてインプット系で得た知識を実践するLab環境がある。インプット系は公式の紹介ページにあるようなものを読むだけ。この読み物コンテンツは、特定の分野に偏ったものなので自分の場合には調べてもすぐに出てこないような話が沢山あって面白かったです。

インプットの学習コンテンツ(https://securityblue.team/why-btl1/ より)

Lab環境は、インプット系の学習コンテンツを読んでいるときに「次はLabに取り組みましょう」というようなときに関連スキルを実践できる。WebブラウザからアクセスするVNC
Lab環境(https://securityblue.team/why-btl1/ より)

Labは画像のように、必要なものが構築された環境(windowsのときもある)にそのときに取り組む問題ファイルが用意されており、ファイルを調査して問題に解答する。ここで仕方がないことだが、Lab環境が用意されている、つまりアクセス先は London, California, Sydney, Mumbaiでどこもping値が高い。自分の環境では、Californiaが一番マシで80~110のping値でweb vnc経由で環境を触っていた。お察しの通りまあまあ遅延があり偶に接続できなかったりフリーズすることもあるので、そういうのに耐えられない場合、まだ受けない方が良いかもしれません。ちなみに試験も、web vncの環境で調査を行うので同じように遅延に悩まされつつ取り組みました。自分の場合は、アパート備え付けのケーブルテレビのよわよわ回線なので光の良い回線を使っている人々はそんなに酷くないのかもしれません。Lab環境へのアクセスは、起動から6時間、全部合わせて100時間の制限があり時間を使いきった場合には追加(有料)できる。自分の場合はあまり使うことが無かったので94時間ほど残っている。
自分の場合のping

最初の説明では、「学習コンテンツに取り組まずに試験に取り組むこともできる」とあるが、新たな発見が必ずあるハズでもあるし、せっかくお金払ったのでやはり全部触り切ってから試験に臨むべきです。

申し込み後の追加学習

  • LetsDefendにサブスクしてMonitoringに沢山取り組む。
  • BTL1を提供してるところと同じところ?が運営しているBlue Team Lab Onlineの無料で取り組めるChallnegesに取り組む。
  • CyberDefendersの過去のCTFに取り組む

等々
LetsDefendのMonitoringに沢山取り組んだことで、Phishingの一般的な手口、ありがちなMalicious File形式等が見えてきたのでとても役立った。
自分の場合には試験でmalicious pdfがあり、どんなものか簡易的に確認するためにpdfの構造を知っていたので、このpdfの構造を調べるきっかけになったCyberDefendersのGetPDFに取り組んでおいて良かった。

試験

試験は学習コンテンツにアクセスするページからリクエストすると、5分くらいで始まる。Webカメラの設定や試験官とのコミュニケーション等は無く、本当に気づいたら始まっている。試験時間は24時間、問題は自分のときは20問あり、Lab環境のときと同じような問題形式になっている。試験環境はLab環境と同じような環境にアクセスし、自分の場合には主にphising mailの解析、侵害されたpcのイメージの解析、pcapの解析、splunkに溜まったログからインシデントに関するものの調査を行った。これらの調査により得られた情報から問題に解答する。問題は文章で答えるようなものではなく、一問一答の形式になっている。この問題を通して、インシデントの理解を進めていく。Lab環境と同じように試験環境も先の通りping値が高いので、遅延があっても落ち着いて急にフリーズしても焦らず取り組んだ。

試験では学習コンテンツで学ぶ内容だけでなく、他にも事前知識があった方がやはり取り組みやすい。例えば、

  • javascriptは読める
  • 学習コンテンツにあったもの以外のAutopsyの機能も難なく利用できる

等々。やはり、BTLが初級編と言っても事前知識は色々とあった方が楽なので学習コンテンツだけで満足せずに、他にも様々なリソースに触れておくべきです。

解答を提出すると、すぐに採点され結果が分かる。このとき70%以上で合格、90%以上(初回試験)でGold Coinに該当する。不合格の場合でも、1回だけは再試験の権利を持っている。

最後に一言

ping値で少しピンチな試験だった。

LetsDefend level 1 alert SOC105 - Requested T.I. URL address event-id 16

Details

EventID: 16
Event Time: Sept. 20, 2020, 10:54 p.m.
Rule: SOC105 - Requested T.I. URL address
Level: Security Analyst
Source Address 172.148.17.47
Source Hostname BillPRD
Destination Address 5.188.0.251
Destination Hostname pssd-ltdgroup.com
Username Mike01
Request URL https[:]//pssd-ltdgroup[.]com
User Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063
Device Action Allowed

playbook

Analyze Threat Intel Data

URL https[:]//pssd-ltdgroup[.]com/

VirusTotal 9/93: https://www.virustotal.com/gui/url/59da6e4583f0ceeb2b5d3933f883ccad9bfc91cd3bbfc0c4afb37c0eafc9ce48/detection
登録数は少ないが、Avira,Bitdefender,ESET,Fortinet,Sophosといった有名どころに登録されている。

Forcepoint ThreatSeeker  elevated exposure
Sophos  spyware and malware
Webroot Phishing and Other Frauds

Hybrid-Analysis: https://www.hybrid-analysis.com/sample/e06dcdb951cbef8ffddd75a9a2d38382d41a4c9ce98569409ab21133c8bfb981?environmentId=100
こちらでも、Maliciousの判定が出ている。

Domain pssd-ltdgroup[.]com

VirusTotal 9/90: https://www.virustotal.com/gui/domain/pssd-ltdgroup.com/relations
ドメインでも検知数はあまり変わらないが、Communicating Filesには明らかにマルウェアが多い。

5.188.0.251

AbuseIPDB: https://www.abuseipdb.com/check/5.188.0.251
登録はあるが、レポートは少ない。
ip-sc: https://ip-sc.net/ja/r/5.188.0.251
SCAMALYTICS: https://scamalytics.com/ip/5.188.0.251
ip-scでは脅威として登録されていないが、SCAMALYTICSではVery high Riskとなっている。
Connection type wireless?

Answer:Malicious

Interaction with TI data

Log

DATE TYPE SOURCE ADDRESS SOURCE PORT DESTINATION ADDRESS DESTINATION PORT
Sep, 20, 2020, 10:54 PM Firewall 172.16.17.47 54211 5.188.0.251 443
Sep, 20, 2020, 10:54 PM Proxy 172.16.17.47 54211 5.188.0.251 443
Main Process: Krankheitsmeldung_092020_07.xlsm
Request URL: https://pssd-ltdgroup.com

おや、xlsmからのURLへのアクセスのようだ。

Endpoint

Process History

Krankheitsmeldung_092020_07.xlsm
MD5:14970ce0a3d03c46a4180db69866d0d1
Path:c:/users/Bill/desktop/Krankheitsmeldung_092020_07.xlsm
Size:558.83 KB
Username:Bill01
Start Time:20.09.2020 22:51

ちなみに、
14970ce0a3d03c46a4180db69866d0d1 - VirusTotal 45/64: https://www.virustotal.com/gui/file/0e3a83e441951860929c99e24bf19e76fe281c3e1b1f7f3aea49b0a38673f873
Malicious!

Answer:Accessed

Containment

Add Artifacts

Value Type Comment
https[:]//pssd-ltdgroup[.]com URL Address accessed from malicious xlsm file
14970ce0a3d03c46a4180db69866d0d1 MD5 Hash Requested T.I. URL address

True Positive

End

f:id:Zarat:20220411205803p:plain
close alert event-id 16

LetsDefend level 1 alert SOC106 - Found Suspicious File - TI Data event-id 17

Details

EventID: 17
Event Time: Sept. 22, 2020, 11:10 a.m.
Rule: SOC106 - Found Suspicious File - TI Data
Level: Security Analyst
Source Address 172.148.17.150
Source Hostname ChanProd
File Name ChromeSetup.exe
File Hash 1430438f19e3d3e2b375d127c68254ab
File Size 63.65 MB
Device Action Cleaned
Download (Password:infected): 1430438f19e3d3e2b375d127c68254ab.zip

playbook

Check if the malware is quarantined/cleaned

Device Action Cleaned

であるので
Answer: Quarantined

Analyze Malware

まず該当ファイルは、

$ file ChromeSetup.exe 
ChromeSetup.exe: PE32 executable (GUI) Intel 80386, for MS Windows
$ md5sum ChromeSetup.exe 
1430438f19e3d3e2b375d127c68254ab  ChromeSetup.exe

VirusTotal: https://www.virustotal.com/gui/file/38dbb5166b28e62fbc482646618a55dc8430fa596d98df6f3eed257df0007db0
VTでは、Maliciousとの報告は無い。
ANYRUN: https://app.any.run/tasks/c8dfb3da-52c3-4df4-8c9e-d91bd4b03129/
ANYRUNでは、動作にはMaliciousの判定がある。ただ、公式から配布されているChromeSetupもMaliciousの判定がついているためANYRUNでは判断しづらい。
通信先は、Maliciousとして登録されているものは無いが怪しいロシアのサーバであるとのレポートも見られる。
redirector.gvt1[.]com - VirusTotal: https://www.virustotal.com/gui/domain/redirector.gvt1.com/community
ただ、ベンダーにMaliciousと登録されているものは無いのでMaliciousではないと判断する。
Answer: Non-malicious

Add Artifacts

Value Type Comment
1430438f19e3d3e2b375d127c68254ab MD5 Hash ChromeSetup.exe

False Positive

End

f:id:Zarat:20220408193747p:plain
close alert event id 17

導入当時は信頼できるものであったも、自動取得するようなセキュリティの情報元は定期的に見直すべきかもしれない。

LetsDefend level 1 alert SOC101 - Phishing Mail Detected event-id 18

Details

EventID: 18
Event Time: Sept. 22, 2020, 3:35 p.m.
Rule: SOC101 - Phishing Mail Detected
Level: Security Analyst
SMTP Address 172.82.128.241
Source Address david@cashbank.com
Destination Address katharine@letsdefend.io
E-mail Subject URGENT! Your bank account may have fallen into the hands of fraudsters!
Device Action Allowed

URGENT! Your bank account may have fallen into the hands of fraudsters!

From: david@cashbank.com Sept. 22, 2020, 3:35 p.m.
To: katharine@letsdefend.io Sept. 22, 2020, 3:35 p.m.

Hi,

I'm working in the CASHBANK fraud department. We urgently expect information from you about the following topic.

I tried to reach you by phone but I could not reach you because your phone was turned off.

We detected suspicious activities in your account. We suspect fraudsters have taken over your credit card.

Can you quickly check your attached credit card statement and return to us?

Yours truly.

Attachments
7299c49dd85069e47d6514ab5e10c264.zip

playbook

Are there attachments or URLs in the email?

Answer: Yes

Analyze Url/Attachment

送信側アドレス

cashbank[.]com

VirusTotal: https://www.virustotal.com/gui/domain/cashbank.com

172.82.128.241

VirusTotal: https://www.virustotal.com/gui/ip-address/172.82.128.241
ドメインもIPもMaliciousとは言えない。

mail Attachments

$ md5sum creditcard 
7299c49dd85069e47d6514ab5e10c264  creditcard

これは、LetsDefend level 1 alert SOC107 - Privilege Escalation Detected event-id 19 - 4ensiXで解析したものと同じであった。

Answer: Malicious

Check If Mail Delivered to User?

Device Action Allowed

アラートと以前の調査から、届いた上で実行している。
Answer: Delivered

Check If Someone Opened the Malicios File/URL?

以前の調査から、実行してしまっている。
Answer: Opened

Add Artifacts

Value Type Comment
david@cashbank.com E-mail Sender
7299c49dd85069e47d6514ab5e10c264 MD5 Hash CVE-2017-16995, Privilege Escalation

End

f:id:Zarat:20220407215802p:plain
close alert event-id 18

LetsDefend level 1 alert SOC107 - Privilege Escalation Detected event-id 19

Details

EventID: 19
Event Time: Sept. 22, 2020, 3:40 p.m.
Rule: SOC107 - Privilege Escalation Detected
Level: Security Analyst
Source Address 172.16.15.78
Source Hostname KatharinePRD
File Name creditcard
File Hash 7299c49dd85069e47d6514ab5e10c264
File Size 17K
Device Action Allowed
Download (Password:infected): 7299c49dd85069e47d6514ab5e10c264.zip

playbook

Define Threat Indicator

Answer:Other

Check if the malware is quarantined/cleaned

まず、

Device Action Allowed

から実行されていそうだ。また、EndpointのProcess Historyより

creditcard
MD5:7299c49dd85069e47d6514ab5e10c264
Path:/home/katharine/Documents/creditcard
Cmdline:/home/katharine/Documents/creditcard

実行が確認できる。
Answer:Not Quarantined

Analyze Malware

creditcard -> 27e56f0f4bbb933a9ef25e0e0c2a4aaae578bdc2623e6bcdf664834e4ce60c9d

ファイル概要

$ file creditcard 
creditcard: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b363505cb5728e34f1104fe882b2e7b1431ffb76, for GNU/Linux 3.2.0, not stripped
$ sha256sum creditcard 
27e56f0f4bbb933a9ef25e0e0c2a4aaae578bdc2623e6bcdf664834e4ce60c9d  creditcard

VirusTotal 34/61: https://www.virustotal.com/gui/file/27e56f0f4bbb933a9ef25e0e0c2a4aaae578bdc2623e6bcdf664834e4ce60c9d
このプログラムはMaliciousである。ネットワーク通信するものではなさそうであり、CVE-2017-16995に関連するとのレポートがある。
少し中身を見てみる。radare2より、

[0x00001110]> pdf @sym.pwn
            ; CALL XREF from main @ 0x183a
┌ 343: sym.pwn ();
│           ; var int64_t var_28h  { > 0xffffffffffffffff} @ rbp-0x28
│           ; var int64_t var_20h  { > 0xffffffffffffffff} @ rbp-0x20
│           ; var int64_t var_18h  { > 0xffffffffffffffff} @ rbp-0x18
│           ; var int64_t var_10h  { > 0xffffffffffffffff} @ rbp-0x10
│           ; var int64_t var_8h  { > 0xffffffffffffffff} @ rbp-0x8
│           0x000016cc      55             push rbp
│           0x000016cd      4889e5         mov rbp, rsp
│           0x000016d0      4883ec30       sub rsp, 0x30
│           0x000016d4      e808ffffff     call sym.__get_fp
│           0x000016d9      488945f8       mov qword [var_8h], rax
│           0x000016dd      48b8ffffffff.  movabs rax, 0xffff87ffffffffff
│           0x000016e7      483945f8       cmp qword [var_8h], rax
│       ┌─< 0x000016eb      770c           ja 0x16f9
│       │   0x000016ed      488d3d840a00.  lea rdi, qword str.bogus_fp ; 0x2178 ; "bogus fp" ; int status
│       │   0x000016f4      e80efdffff     call sym.__exit             ; void _exit(int status)
│       │   ; CODE XREF from sym.pwn @ 0x16eb
│       └─> 0x000016f9      488b45f8       mov rax, qword [var_8h]
│           0x000016fd      4889c7         mov rdi, rax                ; uint32_t arg1
│           0x00001700      e8b3ffffff     call sym.get_sp
│           0x00001705      488945f0       mov qword [var_10h], rax
│           0x00001709      48b8ffffffff.  movabs rax, 0xffff87ffffffffff
│           0x00001713      483945f0       cmp qword [var_10h], rax
│       ┌─< 0x00001717      770c           ja 0x1725
│       │   0x00001719      488d3d610a00.  lea rdi, qword str.bogus_sp ; 0x2181 ; "bogus sp" ; int status
│       │   0x00001720      e8e2fcffff     call sym.__exit             ; void _exit(int status)
│       │   ; CODE XREF from sym.pwn @ 0x1717
│       └─> 0x00001725      488b45f0       mov rax, qword [var_10h]
│           0x00001729      4889c7         mov rdi, rax                ; uint32_t arg1
│           0x0000172c      e8f2feffff     call sym.__read
│           0x00001731      488945e8       mov qword [var_18h], rax
│           0x00001735      48b8ffffffff.  movabs rax, 0xffff87ffffffffff
│           0x0000173f      483945e8       cmp qword [var_18h], rax
│       ┌─< 0x00001743      770c           ja 0x1751
│       │   0x00001745      488d3d3e0a00.  lea rdi, qword str.bogus_task_ptr ; 0x218a ; "bogus task ptr" ; int status                                                                                                               
│       │   0x0000174c      e8b6fcffff     call sym.__exit             ; void _exit(int status)
│       │   ; CODE XREF from sym.pwn @ 0x1743
│       └─> 0x00001751      488b45e8       mov rax, qword [var_18h]
│           0x00001755      4889c6         mov rsi, rax
│           0x00001758      488d3d3a0a00.  lea rdi, qword str.task_struct____lx ; 0x2199 ; "task_struct = %lx\n" ; const char *format                                                                                               
│           0x0000175f      b800000000     mov eax, 0
│           0x00001764      e827f9ffff     call sym.imp.printf         ; int printf(const char *format)
│           0x00001769      488b45e8       mov rax, qword [var_18h]
│           0x0000176d      4805f8050000   add rax, 0x5f8
│           0x00001773      4889c7         mov rdi, rax                ; uint32_t arg1
│           0x00001776      e8a8feffff     call sym.__read
│           0x0000177b      488945e0       mov qword [var_20h], rax
│           0x0000177f      48b8ffffffff.  movabs rax, 0xffff87ffffffffff
│           0x00001789      483945e0       cmp qword [var_20h], rax
│       ┌─< 0x0000178d      770c           ja 0x179b
│       │   0x0000178f      488d3d160a00.  lea rdi, qword str.bogus_cred_ptr ; 0x21ac ; "bogus cred ptr" ; int status                                                                                                               
│       │   0x00001796      e86cfcffff     call sym.__exit             ; void _exit(int status)
│       │   ; CODE XREF from sym.pwn @ 0x178d
│       └─> 0x0000179b      488b45e0       mov rax, qword [var_20h]
│           0x0000179f      4883c004       add rax, 4
│           0x000017a3      488945d8       mov qword [var_28h], rax
│           0x000017a7      48b8ffffffff.  movabs rax, 0xffff87ffffffffff
│           0x000017b1      483945d8       cmp qword [var_28h], rax
│       ┌─< 0x000017b5      770c           ja 0x17c3
│       │   0x000017b7      488d3dfd0900.  lea rdi, qword str.bogus_uid_ptr ; 0x21bb ; "bogus uid ptr" ; int status                                                                                                                 
│       │   0x000017be      e844fcffff     call sym.__exit             ; void _exit(int status)
│       │   ; CODE XREF from sym.pwn @ 0x17b5
│       └─> 0x000017c3      488b45d8       mov rax, qword [var_28h]
│           0x000017c7      4889c6         mov rsi, rax
│           0x000017ca      488d3df80900.  lea rdi, qword str.uidptr____lx ; 0x21c9 ; "uidptr = %lx\n" ; const char *format                                                                                                         
│           0x000017d1      b800000000     mov eax, 0
│           0x000017d6      e8b5f8ffff     call sym.imp.printf         ; int printf(const char *format)
│           0x000017db      488b45d8       mov rax, qword [var_28h]
│           0x000017df      be00000000     mov esi, 0                  ; int64_t arg2
│           0x000017e4      4889c7         mov rdi, rax                ; uint32_t arg1
│           0x000017e7      e883feffff     call sym.__write
│           0x000017ec      e87ff8ffff     call sym.imp.getuid         ; uid_t getuid(void)
│           0x000017f1      85c0           test eax, eax
│       ┌─< 0x000017f3      7522           jne 0x1817
│       │   0x000017f5      488d3ddb0900.  lea rdi, qword str.spawning_root_shell ; 0x21d7 ; "spawning root shell" ; const char *s
│       │   0x000017fc      e83ff8ffff     call sym.imp.puts           ; int puts(const char *s)
│       │   0x00001801      488d3de30900.  lea rdi, qword str.bin_bash ; 0x21eb ; "/bin/bash" ; const char *string
│       │   0x00001808      e873f8ffff     call sym.imp.system         ; int system(const char *string)
│       │   0x0000180d      bf00000000     mov edi, 0                  ; int status
│       │   0x00001812      e8c9f8ffff     call sym.imp.exit           ; void exit(int status)
│       │   ; CODE XREF from sym.pwn @ 0x17f3
│       └─> 0x00001817      488d3dd70900.  lea rdi, qword str.not_vulnerable ; 0x21f5 ; "not vulnerable?" ; int status                                                                                                              
└           0x0000181e      e8e4fbffff     call sym.__exit             ; void _exit(int status)

spawning root shellや/bin/bashという文字列から間違いなくMaliciousであることは分かる。bogus* という文字列がチラホラと見られるため検索すると、
Get Root Privileges Using CVE-2017-16995 | Infinite Script
CVE-2017-16995/exploit-poc-pentest.c at master · gugronnier/CVE-2017-16995 · GitHub
これらに行き着いた。これがおそらく今回のMaliciousなプログラムの基になったものだと思われる。

Answer:Malicious

Check If Someone Requested the C2

Logには5か月あとに、特定のURLへのアクセスがあったが関係性が分からない、MaliciousなURLでなさそうであった。
プログラムを見るとネットワーク通信をしないようなプログラムであると思われるため、アクセスは無さそうだ。
Answer:Not Accessed

Add Artifacts

Value Type Comment
7299c49dd85069e47d6514ab5e10c264 MD5 Hash CVE-2017-16995, Privilege Escalation

End

f:id:Zarat:20220407201806p:plain
close alert event-id 19

いやいや、アクセスは無いですよ。