Hack The Box で役立ったツール3選
こんにちは、エンジニアのikemです。
以前、Hack The Box をさわる機会がありました。
これはペネトレーションテスト学習用のためのオンラインプラットフォームです。
攻撃用の検証環境(Machine)が用意されていて、シェルを奪取するなどしてフラグ(user.txtとroot.txt)を取得することが目的です。
Machineはさまざまなものが用意されており、難易度はeasy, mediam, hard, insaneの4種類があります。
Webプログラミングとは異なるスキルが要求されるため、新鮮な体験でした。
今回、Hack The Box をやってみて、便利だと思ったツールを3つ紹介したいと思います。
(以下は全て攻撃用の検証環境に対して行ったものです)
1. Nmap
ネットワークのホスト上で空いているportは何か、どのようなサービス(アプリケーション名とバージョン)が動いているか、ホストで動いているOS(OS名とバージョン)は何か、などを調査するツールです。
まずはとっかかりを掴むために、Nmapを使って空いているポートを調べます。
以下のように対象のIPアドレスを指定すると、空いているポートとサービスとバージョンを返します。
$ nmap -sV 10.129.44.55
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-03 23:26 JST
Nmap scan report for 10.129.44.55
Host is up (0.32s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 45.79 seconds
また、NmapにはNmap Scripting Engineという、Lua言語で書かれたスクリプトを実行できる機能があります。
Nampが持っているスクリプト一覧
https://nmap.org/nsedoc/index.html
-- script オプションでカテゴリ or スクリプトファイルを指定します
スクリプト単位で実行できますが、スクリプトはカテゴリー分けされており、カテゴリー単位で実行することもできます。
例えば、vulnカテゴリーに属するスクリプトは以下です。
https://nmap.org/nsedoc/categories/vuln.html
vulnを指定すると、脆弱性をCVEで出力します。
$ nmap -sV 10.129.44.55 --script vuln
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-03 23:28 JST
Nmap scan report for 10.129.44.55
Host is up (0.28s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000
|_sslv2-drown:
| vulners:
| cpe:/a:microsoft:sql_server:2017:
| CVE-2021-1636 6.5 https://vulners.com/cve/CVE-2021-1636
| CVE-2019-1068 6.5 https://vulners.com/cve/CVE-2019-1068
| 58ED7124-6DD1-5DA4-AB82-DCAF13F69BD6 6.5 https://vulners.com/githubexploit/58ED7124-6DD1-5DA4-AB82-DCAF13F69BD6 *EXPLOIT*
|_ CVE-2019-0819 4.0 https://vulners.com/cve/CVE-2019-0819
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
| smb-vuln-ms08-067:
| VULNERABLE:
| Microsoft Windows system vulnerable to remote code execution (MS08-067)
| State: LIKELY VULNERABLE
| IDs: CVE:CVE-2008-4250
| The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
| Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
| code via a crafted RPC request that triggers the overflow during path canonicalization.
|
| Disclosure date: 2008-10-23
| References:
| https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: NT_STATUS_OBJECT_NAME_NOT_FOUND
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 82.77 seconds
ちなみに、Nmapは映画にも登場しています。
https://nmap.org/movies/
2. BurpSuite
ローカルプロキシツールです。ブラウザとWebサーバーとの間に入って、パラメータの改ざんができます。
導入方法は、この辺を参考にしました。
https://www.leon-tec.co.jp/blog/diary/10174/
よく使用する機能
Proxy
ブラウザからサーバーへのリクエストをBurpSuiteで保留し、パラメータなどを改ざんして送信することができます。
使い方
1. proxyタブを選択します
2. interceptをonにします
3. ブラウザで任意のURLを入力し、ブラウザからリクエストが送信されます4. ブラウザからサーバーへのリクエストが一旦BurpSuiteで保留されます
5. 送信するパラメータを変更します
6. forwardボタンで、送信します
Intruder
webアプリへ攻撃する機能です。単純なディレクトリブルートフォース攻撃から、複雑なSQLインジェクション攻撃まで、さまざまな攻撃をカスタマイズできます。
使い方
1. Attack Target を指定
2. Payload Position を設定
Payloadsを入れる場所を設定します。
以下では、$user$が任意の値で置換可能な変数になっています。
3. Payloads を設定
Payload Position(ここでは$user$)を置換する値を設定します。
Payload Optionsは、カンマ区切りの値をクリップボードにコピーしておけば、Pasteボタンでそのままリストとして設定できます。
ここでは、1から100の値を設定しました。
4. attack
attackボタンを押して攻撃を開始します。
5. それぞれのレスポンス結果を閲覧可能です
3. gobuster
https://github.com/OJ/gobuster
Golangで書かれたブルートフォース攻撃ツールです。
ワードリストを指定して、ディレクトリに対してブルートフォース攻撃し、手がかりを見つけます。
$ gobuster dir --url http://10.129.57.240/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.129.57.240/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Extensions: php
[+] Timeout: 10s
===============================================================
2022/01/06 14:07:59 Starting gobuster in directory enumeration mode
===============================================================
/images (Status: 301) [Size: 315] [--> http://10.129.57.240/images/]
/index.php (Status: 200) [Size: 10932]
/themes (Status: 301) [Size: 315] [--> http://10.129.57.240/themes/]
/uploads (Status: 301) [Size: 316] [--> http://10.129.57.240/uploads/]
/css (Status: 301) [Size: 312] [--> http://10.129.57.240/css/]
/js (Status: 301) [Size: 311] [--> http://10.129.57.240/js/]
/fonts (Status: 301) [Size: 314] [--> http://10.129.57.240/fonts/]
上記だと、/uploadsから脆弱性がないか調査したりします。
Kali Linux にデフォルトで入っているワードリストは以下です。
$ tree -l -L 3 /usr/share/wordlists
/usr/share/wordlists
├── dirb -> /usr/share/dirb/wordlists
│ ├── big.txt
│ ├── catala.txt
│ ├── common.txt
│ ├── euskera.txt
│ ├── extensions_common.txt
│ ├── indexes.txt
│ ├── mutations_common.txt
│ ├── others
│ │ ├── best1050.txt
│ │ ├── best110.txt
│ │ ├── best15.txt
│ │ └── names.txt
│ ├── small.txt
│ ├── spanish.txt
│ ├── stress
│ │ ├── alphanum_case_extra.txt
│ │ ├── alphanum_case.txt
│ │ ├── char.txt
│ │ ├── doble_uri_hex.txt
│ │ ├── test_ext.txt
│ │ ├── unicode.txt
│ │ └── uri_hex.txt
│ └── vulns
│ ├── apache.txt
│ ├── axis.txt
│ ├── cgis.txt
│ ├── coldfusion.txt
│ ├── domino.txt
│ ├── fatwire_pagenames.txt
│ ├── fatwire.txt
│ ├── frontpage.txt
│ ├── hpsmh.txt
│ ├── hyperion.txt
│ ├── iis.txt
│ ├── iplanet.txt
│ ├── jboss.txt
│ ├── jersey.txt
│ ├── jrun.txt
│ ├── netware.txt
│ ├── oracle.txt
│ ├── ror.txt
│ ├── sap.txt
│ ├── sharepoint.txt
│ ├── sunas.txt
│ ├── tests.txt
│ ├── tomcat.txt
│ ├── vignette.txt
│ ├── weblogic.txt
│ └── websphere.txt
├── dirbuster -> /usr/share/dirbuster/wordlists
│ ├── apache-user-enum-1.0.txt
│ ├── apache-user-enum-2.0.txt
│ ├── directories.jbrofuzz
│ ├── directory-list-1.0.txt
│ ├── directory-list-2.3-medium.txt
│ ├── directory-list-2.3-small.txt
│ ├── directory-list-lowercase-2.3-medium.txt
│ └── directory-list-lowercase-2.3-small.txt
├── fasttrack.txt -> /usr/share/set/src/fasttrack/wordlist.txt
├── fern-wifi -> /usr/share/fern-wifi-cracker/extras/wordlists
│ └── common.txt
├── metasploit -> /usr/share/metasploit-framework/data/wordlists
│ ├── adobe_top100_pass.txt
│ ├── av_hips_executables.txt
│ ├── av-update-urls.txt
│ ├── burnett_top_1024.txt
│ ├── burnett_top_500.txt
│ ├── can_flood_frames.txt
│ ├── cms400net_default_userpass.txt
│ ├── common_roots.txt
│ ├── dangerzone_a.txt
│ ├── dangerzone_b.txt
│ ├── db2_default_pass.txt
│ ├── db2_default_userpass.txt
│ ├── db2_default_user.txt
│ ├── default_pass_for_services_unhash.txt
│ ├── default_userpass_for_services_unhash.txt
│ ├── default_users_for_services_unhash.txt
│ ├── dlink_telnet_backdoor_userpass.txt
│ ├── hci_oracle_passwords.csv
│ ├── http_default_pass.txt
│ ├── http_default_userpass.txt
│ ├── http_default_users.txt
│ ├── http_owa_common.txt
│ ├── idrac_default_pass.txt
│ ├── idrac_default_user.txt
│ ├── ipmi_passwords.txt
│ ├── ipmi_users.txt
│ ├── joomla.txt
│ ├── keyboard-patterns.txt
│ ├── lync_subdomains.txt
│ ├── malicious_urls.txt
│ ├── mirai_pass.txt
│ ├── mirai_user_pass.txt
│ ├── mirai_user.txt
│ ├── multi_vendor_cctv_dvr_pass.txt
│ ├── multi_vendor_cctv_dvr_users.txt
│ ├── named_pipes.txt
│ ├── namelist.txt
│ ├── oracle_default_hashes.txt
│ ├── oracle_default_passwords.csv
│ ├── oracle_default_userpass.txt
│ ├── password.lst
│ ├── piata_ssh_userpass.txt
│ ├── postgres_default_pass.txt
│ ├── postgres_default_userpass.txt
│ ├── postgres_default_user.txt
│ ├── root_userpass.txt
│ ├── routers_userpass.txt
│ ├── rpc_names.txt
│ ├── rservices_from_users.txt
│ ├── sap_common.txt
│ ├── sap_default.txt
│ ├── sap_icm_paths.txt
│ ├── scada_default_userpass.txt
│ ├── sensitive_files.txt
│ ├── sensitive_files_win.txt
│ ├── sid.txt
│ ├── snmp_default_pass.txt
│ ├── telerik_ui_asp_net_ajax_versions.txt
│ ├── telnet_cdata_ftth_backdoor_userpass.txt
│ ├── tftp.txt
│ ├── tomcat_mgr_default_pass.txt
│ ├── tomcat_mgr_default_userpass.txt
│ ├── tomcat_mgr_default_users.txt
│ ├── unix_passwords.txt
│ ├── unix_users.txt
│ ├── vnc_passwords.txt
│ ├── vxworks_collide_20.txt
│ ├── vxworks_common_20.txt
│ ├── wp-plugins.txt
│ └── wp-themes.txt
├── nmap.lst -> /usr/share/nmap/nselib/data/passwords.lst
├── rockyou.txt
└── wfuzz -> /usr/share/wfuzz/wordlist
├── general
│ ├── admin-panels.txt
│ ├── big.txt
│ ├── catala.txt
│ ├── common.txt
│ ├── euskera.txt
│ ├── extensions_common.txt
│ ├── http_methods.txt
│ ├── medium.txt
│ ├── megabeast.txt
│ ├── mutations_common.txt
│ ├── spanish.txt
│ └── test.txt
├── Injections
│ ├── All_attack.txt
│ ├── bad_chars.txt
│ ├── SQL.txt
│ ├── Traversal.txt
│ ├── XML.txt
│ └── XSS.txt
├── others
│ ├── common_pass.txt
│ └── names.txt
├── stress
│ ├── alphanum_case_extra.txt
│ ├── alphanum_case.txt
│ ├── char.txt
│ ├── doble_uri_hex.txt
│ ├── test_ext.txt
│ └── uri_hex.txt
├── vulns
│ ├── apache.txt
│ ├── cgis.txt
│ ├── coldfusion.txt
│ ├── dirTraversal-nix.txt
│ ├── dirTraversal.txt
│ ├── dirTraversal-win.txt
│ ├── domino.txt
│ ├── fatwire_pagenames.txt
│ ├── fatwire.txt
│ ├── frontpage.txt
│ ├── iis.txt
│ ├── iplanet.txt
│ ├── jrun.txt
│ ├── netware.txt
│ ├── oracle9i.txt
│ ├── sharepoint.txt
│ ├── sql_inj.txt
│ ├── sunas.txt
│ ├── tests.txt
│ ├── tomcat.txt
│ ├── vignette.txt
│ ├── weblogic.txt
│ └── websphere.txt
└── webservices
├── ws-dirs.txt
└── ws-files.txt
14 directories, 179 files
最後に
homieでは一緒に働く仲間を絶賛募集中です。興味をお持ちの方はお問い合わせください。