Shikata Ga Nai

Private? There is no such things.

Atomic Test後のクリーンナップについてかいてみた

Hello there, ('ω')ノ

 

アトミック テストを実行した後は。

アトミック テストで定義されたクリーンアップ コマンドを実行して。

システムをリセットし、テストを再度実行する準備をして。

 

一部のテストは、機密情報を含む可能性のあるファイルを作成したり。

ファイル システムを混乱させたりして。

また、安全でない設定値に変更されたり、サービスが停止したりと。

そこで、アトミック テストの多くにはクリーンナップコマンドがあって。

 

今回は、T1003を。

 

f:id:ThisIsOne:20210531141216p:plain

 

f:id:ThisIsOne:20210531141310p:plain

 

テストを実行するには、アプリケーションがインストールされている必要があるので。

CheckPrereqで、アプリケーションが存在するかどうかを確認して。

テストで、LSASS.exe メモリをダンプするには前提条件を満たす必要があって。

 Invoke-AtomicTest T1003.001 -TestNumbers 2 -CheckPrereqs

 

f:id:ThisIsOne:20210531093818p:plain

 

アプリケーションが存在しない場合は、GetPrereqでインストールして。

 Invoke-AtomicTest T1003.001 -TestNumbers 2 -GetPrereqs

 

f:id:ThisIsOne:20210531093929p:plain

 

再度、確認することに。

前提条件が満たされているので、テストを実行できるようになって。

 Invoke-AtomicTest T1003.001 -TestNumbers 2 -CheckPrereqs

 

f:id:ThisIsOne:20210531094051p:plain

 

再度、テストを実行して。

 Invoke-AtomicTest T1003.001 -TestNumbers 2

 

f:id:ThisIsOne:20210531094423p:plain

 

Windows Defenderがこの攻撃をブロックするので。

Windows Defenderを一時的に無効にする必要があるので。

 Set-MpPreference -DisableRealtimeMonitoring $true

 

f:id:ThisIsOne:20210531094554p:plain

 

テストを実行すると下記にlsass_dumpファイルが表示されて。

 C:\Windows\Temp\lsass_dump.dmp

 

f:id:ThisIsOne:20210531100457p:plain

 

下記で、どのような内容かの確認ができて。

 cat C:\Windows\Temp\lsass_dump.dmp

 

f:id:ThisIsOne:20210531100821p:plain

 

テスト後にクリーンアップするには下記のフラグで。

 Invoke-AtomicTest T1003.001 -TestNumbers 2 -Cleanup

 

f:id:ThisIsOne:20210531101203p:plain

 

クリーンアップコマンドについての例は、いくつかあって。

下記は、レジストリのクリーンアップについて。

https://github.com/redcanaryco/atomic-red-team/blob/8a82e9b66a5b4f4bc5b91089e9f24e0544f20ad7/atomics/T1546.010/T1546.010.md#atomic-test-1---install-appinit-shim

 

f:id:ThisIsOne:20210531101753p:plain

 

下記は、サービスを再度有効にしての開始について。

https://github.com/redcanaryco/atomic-red-team/blob/8a82e9b66a5b4f4bc5b91089e9f24e0544f20ad7/atomics/T1562.001/T1562.001.md#atomic-test-4---stop-crowdstrike-falcon-on-linux

 

f:id:ThisIsOne:20210531101810p:plain

 

下記は、ユーザの削除について。

https://github.com/redcanaryco/atomic-red-team/blob/8a82e9b66a5b4f4bc5b91089e9f24e0544f20ad7/atomics/T1136.001/T1136.001.md#atomic-test-3---create-a-new-user-in-a-command-prompt

 

f:id:ThisIsOne:20210531101831p:plain

 

下記は、プロキシの削除について。

https://github.com/redcanaryco/atomic-red-team/blob/8a82e9b66a5b4f4bc5b91089e9f24e0544f20ad7/atomics/T1090.001/T1090.001.md#cleanup-commands-2

 

f:id:ThisIsOne:20210531101852p:plain

 

下記は、レジストリ キーの削除について。

https://github.com/redcanaryco/atomic-red-team/blob/8a82e9b66a5b4f4bc5b91089e9f24e0544f20ad7/atomics/T1548.002/T1548.002.md#atomic-test-1---bypass-uac-using-event-viewer-cmd

 

f:id:ThisIsOne:20210531101914p:plain

 

下記は、スケジュールされたタスクの削除について。

https://github.com/redcanaryco/atomic-red-team/blob/8a82e9b66a5b4f4bc5b91089e9f24e0544f20ad7/atomics/T1053.005/T1053.005.md#atomic-test-1---scheduled-task-startup-script

 

f:id:ThisIsOne:20210531101931p:plain

 

Best regards, (^^ゞ

Atomic Testでカスタム入力引数を指定してみた

Hello there, ('ω')ノ

 

今回は、T1016を。

 

f:id:ThisIsOne:20210530165105p:plain

 

f:id:ThisIsOne:20210530165210p:plain

 

まずは、T1016の詳細について。

Atomic Test #3が表示されないもので。

 Invoke-AtomicTest T1016 -ShowDetailsBrief

 

f:id:ThisIsOne:20210530164720p:plain

 

下記で、確認すると。

サポートされているプラ​​ットフォームは、LinuxとmacOSのことで表示されず。

https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1016/T1016.md#atomic-test-3---system-network-configuration-discovery

 

f:id:ThisIsOne:20210530164843p:plain

 

次に#5について詳細を見てみると。

 Invoke-AtomicTest T1016 -TestNumbers 5 -ShowDetails

 

リストされているコマンドには 2 つのバージョンがあって。

入力引数が置換されているものとないもので。

 

 $ports = Get-content #{port_file}

 $file = "#{output_file}"

 

 $ports = Get-content C:\AtomicRedTeam\atomics\T1016\src\top-128.txt

 $file = "$env:USERPROFILE\Desktop\open-ports.txt"

 

f:id:ThisIsOne:20210530165514p:plain

 

とりあえずテストを実行してみるとデフォルトで実行されて。

 Invoke-AtomicTest T1016 -TestNumbers 5

 

f:id:ThisIsOne:20210530170042p:plain

 

出力されたファイルは下記のとおりで。

 open-ports.txt

 

f:id:ThisIsOne:20210530170540p:plain

 

たとえば、入力引数に独自の値を入力するには。

「PromptForInputArgs」フラグを使用できて。

実行すると3つの入力引数に入力できるわけで。

なにも入力しなければ、デフォルトのままで。

 Invoke-AtomicTest T1016 -TestNumbers 5 -PromptForInputArgs

 

f:id:ThisIsOne:20210530171432p:plain

 

指定するポートのファイルを作成して。

 USERPROFILE\Desktop\3ports.txt

 

f:id:ThisIsOne:20210530220020p:plain

 

「myargs」という変数にカスタム引数を代入して。

Invoke-AtomicTestに引数としてわたす方法は下記のとおりで。

$myargsに引数をセットして。

 

 $myargs = @{output_file = "$env:USERPROFILE\Desktop\3ports.txt"; port_file = "$env:USERPROFILE\ports2scan.txt"}

 Invoke-AtomicTest T1016 -TestNumbers 5 -InputArgs $myargs

 

f:id:ThisIsOne:20210530215909p:plain

 

実行結果のファイルの中身は下記のとおりで。

 USERPROFILE\ports2scan.txt

 

f:id:ThisIsOne:20210530220126p:plain

 

Best regards, (^^ゞ

Atomic Testの実行をやってみた

Hello there, ('ω')ノ

 

PowerShellをつかってフレームワークで、アトミックテストを実行するのに。

使用できるメソッドは、ローカルとリモートがあって。

「ローカル」メソッドでは、フレームワークがインストールされているのと。

同じマシン上でアトミックテストを実行します。

「リモート」メソッドでは、フレームワークが 1 台のマシンにインストールされて。

PowerShellでリモート処理セッションを介して。

リモート マシンでアトミック テストを実行して。

 

リモート実行については、下記のサイトに書いてあって。

 https://github.com/redcanaryco/invoke-atomicredteam/wiki/Execute-Atomic-Tests-(Remote)

 

f:id:ThisIsOne:20210529095511p:plain

 

今回は、T1218.010について。

 

f:id:ThisIsOne:20210529165947p:plain

 

コンマ区切りで、名前または番号で複数のテストを実行でて。

 Invoke-AtomicTest T1218.010 -TestNumbers 2,3

 

もしくは、

 Invoke-AtomicTest T1218.010 -TestNames "Regsvr32 remote COM scriptlet execution", "Regsvr32 local DLL execution"

 

f:id:ThisIsOne:20210529095721p:plain

 

f:id:ThisIsOne:20210529095633p:plain

 

f:id:ThisIsOne:20210529101136p:plain


テスト#2の実行中にアクセスが拒否されたのは。

Windows Defender がこの攻撃手法をブロックした結果で。

この2つのテストは、Windows 10 にない計算アプリを起動しようとしていて。

Windows Defender を無効にして。

 

f:id:ThisIsOne:20210529115650p:plain

 

リアルタイム保護を無効にして。

 Set-MpPreference -DisableRealtimeMonitoring $true

 

再度、下記を実行すると正常に実行されて。

 Invoke-AtomicTest T1218.010 -TestNumbers 2

 

f:id:ThisIsOne:20210529115723p:plain


他には、特定のT#内のすべてのテストを実行する場合は、下記のとおりで。

 Invoke-AtomicTest T1218.010

 

実行すると、アトミック テスト定義のYAMLファイルの場所が表示されて。

 PathToAtomicsFolder = C:\AtomicRedTeam\atomics

 

f:id:ThisIsOne:20210529160046p:plain


また、各アトミック テストには、GUIDと呼ばれる一意の識別子があって。

 Atomic Test GUID: 449aa403-6aba-47ce-8a37-247d21ef0306

 

YAMLファイルや各テストの詳細で確認できて。

テスト名や番号の代わりにGUIDを指定してテストを実行することも。

 Invoke-AtomicTest T1218.010 -TestGuids 449aa403-6aba-47ce-8a37-247d21ef0306

 

f:id:ThisIsOne:20210529161407p:plain

 

それからアトミックテストのログは下記で確認できて。

 cat $env:TEMP\Invoke-AtomicTest-ExecutionLog.csv

 

f:id:ThisIsOne:20210529160921p:plain


Excelで表示すると読みやすく。

 

f:id:ThisIsOne:20210529161238p:plain


Best regards, (^^ゞ

Using PHAR deserialization to deploy a custom gadget chainをやってみた

Hello there, ('ω')ノ

 

PHARデシリアライズを使用してカスタムガジェットチェーンをデプロイするを。

 

このラボでは、PHARの逆シリアル化を高度なハッキング手法と組み合わせると。

カスタムガジェットチェーンを介してリモートでコードが実行されて。

 

まずは、ログインして。

 

f:id:ThisIsOne:20210528133832p:plain

 

JPGをアバターとしてアップロードして。

 

f:id:ThisIsOne:20210528134015p:plain

 

インターセプトしてリクエストを見ていくと下記のリクエストが。

 

f:id:ThisIsOne:20210528134403p:plain

 

履歴を見ると上記のリクエストは表示されていないものの。

下記のレスポンスから呼ばれているようで。

 

f:id:ThisIsOne:20210528134711p:plain

 

Imagesにチェックを入れてリクエストが表示されるようにしておいて。

 

f:id:ThisIsOne:20210528135114p:plain

 

f:id:ThisIsOne:20210528154026p:plain

 

cgi-binのリクエストをSendすると。

レスポンスにCustomTemplate.php〜ファイルを見つけることができて。

 

f:id:ThisIsOne:20210528135447p:plain

 

バックアップ拡張子を使用してファイルをリクエストすると。

file_exists()が、lockFilePath属性で呼び出されていて。

 

f:id:ThisIsOne:20210528135647p:plain

 

Blog.phpでは、Twigテンプレートエンジンを使用していることがわかって。

これで、デシリアライズを使用してSSTIペイロードを渡すことができて。

 

f:id:ThisIsOne:20210528155713p:plain

 

下記からTwigでリモートコード実行するためのSSTIペイロードをダウンロードして。

これは、ファイルを削除するPHPスクリプトを含んだphar-jpg-polyglotで。

https://github.com/PortSwigger/serialization-examples/blob/master/php/phar-jpg-polyglot.jpg

 

f:id:ThisIsOne:20210528133629p:plain

 

ファイルをアップロードして。

 

f:id:ThisIsOne:20210528140259p:plain

 

アバターをロードするリクエストをリピータへ。

 

f:id:ThisIsOne:20210528160752p:plain

 

phar://ストリームでアップロードした悪意のあるアバターを。

逆シリアル化するようにリクエストをSendすると。

 

f:id:ThisIsOne:20210528140404p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210528140341p:plain

 

Best regards, (^^ゞ

Atomic Testの前提条件をCheckPrereqs/GetPrereqsしてみた

Hello there, ('ω')ノ

 

フレームワークで、アトミックテストを実行するための。

前提条件を満たしているかどうかを確認することに。

 

今回は、下記のテクニックについて。

 https://attack.mitre.org/techniques/T1485/

 

f:id:ThisIsOne:20210528112401p:plain

 

まずは、下記を実行すると。

sdelete.exeが操作可能なプログラムとして認識されないというエラーが。

どうやら、SDeleteがWindowsにインストールされていないようで。

 

 Invoke-AtomicTest T1485 -ShowDetailsBrief

 Invoke-AtomicTest T1485 

 

f:id:ThisIsOne:20210528100208p:plain

 

 Invoke-AtomicTest T1485 -TestNumbers 1

 

f:id:ThisIsOne:20210528100516p:plain

 

下記で、マークダウンを確認すると前提条件が確認できて。

https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1485/T1485.md

 

f:id:ThisIsOne:20210528115756p:plain

 

CheckPrereqsフラグで、テストを実行する前に前提条件を満たしているかを確認して。

 

前提条件を満たしていないことがわかったので。

 Invoke-AtomicTest T1485 -TestNumbers 1 -CheckPrereqs

 

f:id:ThisIsOne:20210528101003p:plain

 

GetPrereqsで、依存関係を満たすことに。

 Invoke-AtomicTest T1485 -TestNumbers 1 -GetPrereqs

 

f:id:ThisIsOne:20210528101110p:plain

 

再度、下記を実行すると正常終了できて。

 Invoke-AtomicTest T1485 -TestNumbers 1

 

f:id:ThisIsOne:20210528101220p:plain


また、アトミックテストは、管理者権限が必要だったりもして。

下記を実行すると、昇格が必要とのメッセージが。

 Invoke-AtomicTest T1003.001 -TestNumbers 10 -CheckPrereqs

 

f:id:ThisIsOne:20210528101824p:plain

 

なので、PowerShellアイコンを右クリックして、管理者として実行を。

再度、実行するとアトミックテストの依存関係をチェックして。

条件を満たしていることが確認できて。

 

f:id:ThisIsOne:20210528101930p:plain

 

Best regards, (^^ゞ