【随時更新】CTFでよく使用するツール等の紹介
こんにちは、みらい(@Minimal_Mirai)です。
今回は私がCTF(HTB, VulnHub, OSCP)でよく使うツール等の紹介です。同じような分野を学ぶ一助になれば幸いです。
第三者所有のサーバーや、管理外のネットワークに対する攻撃は絶対に行わないで下さい。
前提
先駆者の自動化ツールは頼るべきだが、内部の挙動やオプションをある程度把握するべきであり、何をしているか理解しながら脆弱性の列挙を行いましょう(自敬)。
個人的にはWeb系の脆弱性を列挙する際に使うツールの挙動を把握したい時などは、
Proxychains(場合によっては使用) -> BurpSuiteでキャプチャしてどんなPayloadを送信しているか見ると勉強になるのでおすすめします。
ポートスキャン
nmap
言わずとしれたポートスキャンツール、ただし実際の環境ではパケットに特徴がありFW等でブロックされるケースあり。
netcat
revシェルの取得で最も利用する事が多いが、nmapの出力の確認等で利用することがあります。
nc -nv <target-ip> <port>
また個人的には以下のコマンドで特定のポート番号から終了ポート番号までを指定し、ポートスキャンを行う事があります。
Web
Nikto
誤検知も多いが稼働しているWebサーバーによっては/usr/share/wordlists/dirbuster/.*等のsmall, midumサイズのファイルでは発見の遅れが発生する(最終行に近い)ページを列挙してくれたりする(MS-IS鯖であれば.aspxや.asp等の拡張子の付与等もした上で列挙してくれる)
DirBuster
言わずとしれたWebディレクトリの総当りツール、Webページを再帰的に列挙してくれる点がとても良い。
DIRBにも再帰的に列挙するオプションはあるがDirBusterの方をよく使用している。
SQL Map
SQL Injection等に特化した自動化ツール、場合によってはPHPのWebシェルをアップロード(--os-shell オプション)して自動で引っ張ってきてくれる。
便利ではあるが特に挙動を理解して使用する事をおすすめする。
またSQLiのPayloadに関しては以下3つの記事が大変参考になるのでおすすめします。
PayloadsAllTheThings/SQL Injection at master · swisskyrepo/PayloadsAllTheThings · GitHub
FFUF
ファジングツール、オプションが多く把握しきれていない点も多いが詳細な値を設定して結果をフィルタできる点が特徴的。
以下の記事が大変参考になる。
WEBファジングツール FFUFのすゝめ: NECセキュリティブログ | NEC
BurpSuite
Webのパケットキャプチャ等で重宝しているツール。
その他、Proxychainsと合わせて使用する事が多い。
ProxyChains
一般的なプロキシ用途からSSHポートフォワード等、汎用性の高いツール。
proxychains-ng | Kali Linux Tools
Windows権限昇格
winpeas.exe
権限昇格に繋がる脆弱性を自動で列挙してくれる。
オプションも含め理解するとかなり便利なツールの1つ。
PEASS-ng/winPEAS at master · carlospolop/PEASS-ng · GitHub
PowerSploit系
PowerShellを使用した攻撃系ツール全般。
権限昇格に繋がる脆弱性の列挙(PowerUp.ps1)やリバースシェル、AD鯖への攻撃に使用する事が多い。
GitHub - PowerShellMafia/PowerSploit: PowerSploit - A PowerShell Post-Exploitation Framework
Mimikatz
サイバー界のAK47の異名を持つ有名ツール。
大体の操作には管理者権限, SeDebugPrivilege権限等が必要なため、権限昇格後のローカル/DCユーザー等の列挙に使用する事が多い。
また一般的な環境(FW/AVが稼働している)では検知されるため、Bypassする方法やdump等についても頭に入れておくと良い。
以下聖書
wes.py
systeminfoコマンドの出力結果やWindowsのバージョン等からどのカーネルエクスプロイトに対して脆弱か判定してくれる。
攻撃対象マシンで動き回る必要がなく、検知リスクを回避できるため便利。
GitHub - bitsadmin/wesng: Windows Exploit Suggester - Next Generation
Juicy Potato
Windows権限昇格ツール。
使用には条件を満たしている必要あり。
Abusing Token Privileges For Windows Local Privilege Escalation
SharpUp
個人的にあまり使用する頻度は高くないが一応。
GitHub - GhostPack/SharpUp: SharpUp is a C# port of various PowerUp functionality.
BloodHound
AD系の情報を整理する時に利用する。
Apexとの関連はありません。
以下の記事と動画がとても参考になりました。
BloodHoundを使用したWindows Active Directory環境の分析 - Qiita
chisel.exe
ポートフォワードする際に利用。
バイナリから起動するだけなのでかなり楽。
使用できない環境も存在するため、netshを利用したポートフォワード等も覚えておくことをおすすめします。
Pivoting: Setting up a port proxy with netsh on Windows - David Hamann
pth-winexec / evil-winrm
ユーザーの資格情報でログインを試したい場合や、Pass-The-Hashでrevシェルを取得したい際等に利用。
LISTENは通常5985ポートを利用する。
5985,5986 - Pentesting WinRM - HackTricks
icaclsコマンド / accesschk.exe
パーミッション設定の確認に利用。
Security Professionals Network Inc. - 【SPN通信】Windowsオブジェクトのアクセス権を表示するAccessChk
AccessChk - Windows Sysinternals | Microsoft Docs
Linux権限昇格
linpeas.sh
言わずとしれた権限昇格ツール、オプションも含め覚えておくと重宝すること間違いなし。
PEASS-ng/linPEAS at master · carlospolop/PEASS-ng · GitHub
GTFOBins
Linux上でSUID/SGIDが付与されているアプリケーションから権限昇格する手法がまとめられている。
SUID/SGIDが付与されているアプリケーションの列挙はfindコマンドやlinpeas.shから出力されたものを見る事が多いです。
意外なものも列挙されていたりして、見るだけでも勉強になる。
SSHポートフォワード(Proxychains併用)
怪しげなプロセスがローカルポートで動いていたり、ネットワークの横展開する際に役立つ。
その他
SMB Clientを用いた再帰的なファイルダウンロード
SMB Map
SMBの列挙を行うツール。
知り得た資格情報の流用や、SMBディレクトリのR/W権限の確認で使うことが多い。
crackmapexec
SMBポートが開放されている場合、Windowsのバージョンやビルド番号まで列挙するため非常に有用なツール。
crackmapexec | Kali Linux Tools
・OS情報の列挙
metasploit
便利すぎる。ただしOSCP試験では使用制限があるため、頼りすぎず学習することをおすすめする。
LFI脆弱性を利用してPHPアプリケーションをWebシェル化してみる。
追記:アクセスログポイズニング攻撃という攻撃手法らしいです。知らなかった...
こんにちは、みらい(@Minimal_Mirai)です。
CTFマシンにてLFI脆弱性を利用してリバースシェルを取得する手法が面白かったのでWriteup的に書いておきます。
当方、セキュリティ初学者のため間違っている点があればTwitterのDMで教えてください。
この記事は悪用等を推奨する記事ではありません。第三者の所有するサーバーへの攻撃はお辞めください。
利用するCTFマシン
VulnHub上のマシン、以下2つを対象に紹介します。
また現在のPHPのデフォルト設定ではおそらくこれらの手法が使えず(主要なログファイル等へのデフォルト権限でのアクセスができないそう)、ただ手法として面白いため紹介するというスタンスです。
前提
・ポートスキャン
->DIR BusterにてWebディレクトリを辞書ファイルで列挙
->怪しげなWebページを検出
->PHPを利用したWebアプリケーションであり、Fuzzingの過程でLFI脆弱性の存在が判明
LFI脆弱性の利用
LFI脆弱性を利用して/var/log/以下のログファイルにアクセスできることが判明し、どうにか利用したい。
アクセスできるファイルは以下の通り
Solstice - VulnHub
Lab1においては80番ポートと8593番ポートが開放されており、
うち8593番ポートで稼働しているPHPアプリケーションにLFI脆弱性が存在していた。
またapache2の80番ポートに対するaccess.log(/var/log/apache2/access.log)にアクセスできる事が分かった。
そのため、access.logに残るようなGETリクエストをncで送信する。
送信した文字列*1 は、PHPをwebシェルとして利用する文字列です。
実行したコマンド(whoami)が実行され、www-dataでwebサーバーが稼働している事が判明しました。
以上でWebサーバーに対し任意のコマンドが実行ができるようになりました。
HA: Natraj - VulnHub
Lab2に置いては、80番ポートでWebサーバーが稼働していることが確認できます。
PHPアプリケーションにLFI脆弱性が存在することがわかります。
また/var/log/auth.logに対する読み取り権限を有していることが確認できます。
そのため、あえてSSHに対して不正な認証を試みる。
以下の画像でidコマンドが実行できていることが確認でき、この脆弱性を利用し、任意のコマンド実行が可能になった事が分かります。
まとめ
恥ずかしながらLFI脆弱性を利用し、Webシェルの取得が可能であることを初めて知り少し驚いたのでご紹介させて頂きました。
また下記のリバースシェルジェネレーターを利用し、任意の言語でPayloadを作成し送信すると便利です。
あと個人的にPHPのWebシェルからリバースシェルのPayloadを送信する際にPythonを利用すると成功率高いような気がするのですが気の所為ですかね?(わからん)
【PowerShell】Windowsの初期設定を自動化してみる
こんばんは、みらい(@Minimal_Mirai)です。
某バイト先にてPCなんでも屋さん的なことをしており、複数台のPCの初期設定をGUI(コントロールパネル)で行うのが非常に面倒だったため、PowerShellスクリプトで自動化してみました。
PowerShellは私の慣れと、可読性の点で使いました(ほぼ前者です)。
RegistryChanges Viewを使用して設定変更前と変更後のレジストリの差分を比較し、スクリプトに落とし込みました。
RegistryChanges Viewは非常に扱いやすく、Windowsの自動化スクリプトを書く際に重宝しています。
https://www.nirsoft.net/utils/registry_changes_view.html
使用の際は念のためにWindows/レジストリのバックアップを。
描画系の設定とMSゲーム系(Xboxアプリ等)を無効化し、電源オプションを高パフォーマンスに設定しています。
ついでにHDDのデフラグを行い、設定反映のためexplorer.exeをkillして再起動しています。
事務職の方が利用される可能性があるそうで、psスクリプトだとデフォルト設定でブロックされるため、vbsファイル -> powershell -ep bypass で起動しスクリプトを実行できるようにしておき、ワンクリックで動作が簡潔するようにしました。
AD環境を利用されるほど大規模な環境ではないため、このようなスクリプトで初期設定を行っています。
個人的な用途としてもWindowsの検証用VMやAzureのVPSを新規作成する際に使用していたりします。
諸々調整予定ではありますが改善点等ありましたらTwitter(@Minimal_Mirai)までDM下さると幸いです。
おやすみなさい!