【域滲透】獲取域環境內使用者登入資訊
之前見到有人在討論ofollow,noindex">域內使用者在域內的機器ip怎麼查呢 ,集思廣益,結合答覆及自己的觀點,總結了以下內容。
0x00 adfind(未實踐)
有時候管理員會設定域使用者只可以登入指定的的域內計算機,使用adfind或者powerview匯出域使用者資訊可以檢視;
檢視域內使用者詳細資訊: adfind.exe -h DNS_SERVER_IP -sc u:username(目標使用者) 檢視域內所有使用者詳細資訊: AdFind.exe -h DNS_SERVER_IP -sc u:* 詳見:http://www.joeware.net/freetools/tools/adfind/usage.htm
powerview在域內執行就可以。
0x01 檢視域內機器的使用者目錄資料夾
確定開機狀態的計算機列表-建立連線-檢視使用者目錄-斷開連線,可以參考如下批處理:
for /f "delims=" %%i in (live.txt) DO ( net use \\%%i\C$ password /u:domain\domain_admins_user if not errorlevel 1 ( for /f "delims=" %%j in ('dir /od /b \\%%i\C$\users\') do ( echo %%i:%%j>> test.log ) net use \\%%i\C$ /del ) )
域管不用建立連線就可以訪問域內計算機資源(未實踐),因此以域管許可權執行時可以參考如下批處理:
for /f "delims=" %%i in (live.txt) DO ( for /f "delims=" %%j in ('dir /od /b \\%%i\C$\users\') do ( echo %%i:%%j>> test.log ) )
0x02 域控日誌
wevtutil
為Windows 事件命令列實用程式,其匯出的日誌為evtx格式(即Windows日誌本身的儲存格式),可以使用Windows事件檢視器分析,Crtl+F查詢,或者不使用epl
引數,直接重定向輸出即可。
wevtutil
常用的場景是清理日誌。
wevtutil cl application wevtutil cl security wevtutil cl system wevtutil cl "windows powershell"
而它也可作為篩選分析日誌的工具。這裡需要注意的幾個ID分別為:4624(使用者登陸成功)、4768、4776(使用者賬號驗證成功)
使用wevtutil
結合python
-
wevtutil
wevtutil qe security /q:"Event[System[(EventID=4624 or EventID=4768 or EventID=4776)]]" /f:text /rd:true /c:1 > EvtLogon.dat
-
引數說明
qe: 從日誌或日誌檔案中查詢事件;(預設xml格式顯示) Security: 指定安全事件的日誌; /q: 篩選規則,可以開啟Windows事件檢視器的篩選器配置篩選條件後轉至XML複製篩選規則; /f: 以text格式顯示 /rd: 指定讀取事件的方向 /c: 指定個數 該命令其它引數參考wevtutil /?
-
python
# -- coding:utf-8 -- # Python v2.7.10 import sys import csv evt = 'EvtLogon.dat' fevt = open(evt,'r') try: # For Eliminate redundancies lastdate = 'lastdate' lasttask = 'lasttask' # 因為windows下的換行符問題,導致寫的檔案會有空行,使用二進位制模式開啟 with open('LogonStat.csv', 'wb') as csvfile: csv_write = csv.writer(csvfile) csv_write.writerow(["Task", "Date", "Account Name", "Account Domain", "Logon Address"]) for eachline in fevt: if eachline.find('Event[') > -1: task = '' date = '' accname = '' logontype = '' logonaddr = '' skip = 0 elif eachline.find('Date:') > -1: date = eachline[(eachline.find(':')+1):].strip() elif eachline.find('Task:') > -1: task = eachline.split(':')[1].strip() if (date == lastdate) and (task == lasttask): ## reduce skip = 1 else: lastdate = date lasttask = task elif eachline.find('Account Name:') > -1: accname = eachline.split(':')[1].strip() if (task == 'Logon') and (accname.find('$') > -1): ## reduce skip = 1 elif eachline.find('Account Domain:') > -1: accdomain = eachline.split(':')[1].strip() elif eachline.find('Source Network Address:') > -1: logonaddr = eachline[(eachline.find(':')+1):].strip() if logonaddr == '-': skip = 1 if (skip == 0) and (task == 'Logon'): LogonStat = [[task, date, accname, accdomain, logonaddr]] csv_write.writerows(LogonStat) except Exception as e: # pass print 'Error: %s' % e sys.exit(1) fevt.close() csvfile.close()
PS: 篩選條件還有很多,都可以組合利用,從而篩選出自己所需要的資訊。
wevtutil qe Security /q:"*[EventData[Data[@Name='LogonType']='10'] and EventData[Data[@Name='TargetUserName']='RcoIl'] and System[(EventID=4624) and TimeCreated[timediff(@SystemTime) <= 2592000000]]]" wevtutil qe Security /q:"*[System[(Keywords='0x8020000000000000')] and EventData[Data[@Name='SubjectUserName']='RcoIl']]" /f:text /rd:true /c:2