之前见到有人在讨论域内用户在域内的机器ip怎么查呢,集思广益,结合答复及自己的观点,总结了以下内容。
0x00 adfind
有时候管理员会设置域用户只可以登录指定的的域内计算机,使用 adfind或者 powerview导出域用户信息可以查看;1
2
3
4
5
6
7
8查看域内用户详细信息:
adfind.exe -h DNS_SERVER_IP -sc u:rcoil(目标用户)
adfind.exe -h DNS_SERVER_IP -sc u:rcoil | findstr userWorkstations //非域权限执行需要指定账户密码
查看域内所有用户详细信息:
AdFind.exe -h DNS_SERVER_IP -sc u:*
详见:http://www.joeware.net/freetools/tools/adfind/usage.htm
powerview在域内执行就可以。
1 | Get-NetUser -Domain demo.rcoil.me //domain参数请加完整的域名 |
0x01 查看域内机器的用户目录文件夹
确定开机状态的计算机列表-建立连接-查看用户目录-断开连接,可以参考如下批处理:1
2
3
4
5
6
7
8
9for /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
)
)
域管不用建立连接就可以访问域内计算机资源,因此以域管权限运行时可以参考如下批处理:1
2
3
4
5for /f "delims=" %%i in (live.txt) DO (
for /f "delims=" %%j in ('dir /od /b \\%%i\C$\users\') do (
echo %%i:%%j>> test.log
)
)
代码补充:NetWorkConnectIPC
0x02 域控日志
wevtutil
为Windows 事件命令行实用程序,其导出的日志为evtx格式(即Windows日志本身的存储格式),可以使用Windows事件查看器分析,Crtl+F查找,或者不使用epl
参数,直接重定向输出即可。wevtutil
常用的场景是清理日志。1
2
3
4wevtutil cl application
wevtutil cl security
wevtutil cl system
wevtutil cl "windows powershell"
而它也可作为筛选分析日志的工具。这里需要注意的几个ID分别为:4624(用户登陆成功)、4768、4776(用户账号验证成功)
使用wevtutil
结合python
wevtutil
1
wevtutil qe security /q:"Event[System[(EventID=4624 or EventID=4768 or EventID=4776)]]" /f:text /rd:true /c:1 > EvtLogon.dat
参数说明
1
2
3
4
5
6
7qe: 从日志或日志文件中查询事件;(默认xml格式显示)
Security: 指定安全事件的日志;
/q: 筛选规则,可以打开Windows事件查看器的筛选器配置筛选条件后转至XML复制筛选规则;
/f: 以text格式显示
/rd: 指定读取事件的方向
/c: 指定个数
该命令其它参数参考wevtutil /?python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56# -- 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: 筛选条件还有很多,都可以组合利用,从而筛选出自己所需要的信息。1
2
3wevtutil 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
0x03 DNS解析记录
1 | dnscmd 127.0.0.1 /enumrecords demo.rcoil.me demo.rcoil.me. /type A //利用dnscmd导出dns正向解析记录 |
C# .NET
编写的工具 SharpADDNSDump
0x04 Exchange 日志
4.1 Outlook Web Application
owa
默认的登陆日志位置如下:
1 | C:\inetpub\logs\LogFiles\W3SVC1(W3SVC2) |
日志是根据时间(天)¬为单位进行分割的,比如 u_ex190426
就表示 19 年 4 月 26 号
那一天的日志。
在实战中,可根据自己的实际需求,把指定时间段内的日志想办法拖回来即可。
部分内容如下:
1 | 2019-04-26 06:49:51 192.10.20.200 POST /owa/auth.owa &CorrelationID=<empty>;&ClientId=KFTFMZBXS0ATOXTCCJLOQ&cafeReqId=c3db90a9-02e3-4fd0-8633-05fb7799f4fd; 443 rcoil.me\pentest 192.10.20.104 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/73.0.3683.103+Safari/537.36 https://exchange/owa/auth/logon.aspx?replaceCurrent=1&url=https%3a%2f%2fexchange%2fowa 302 0 0 31 |
此时我们需要的内容单单为:rcoil.me\pentest 192.10.20.104
,其他数据可不理会。
4.2 Outlook
客户端
Outlook
客户端登陆的默认日志文件如下:
1 | C:\Program Files\Microsoft\Exchange Server\V14\Logging\RPC Client Access |
0x05【参考】
wevtutil筛选windows日志查询结果
[Tools]获取域环境内所有用户登录信息(附源码及程序)
域内用户在域内的机器ip怎么查呢?
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd337721(v%3dws.10)
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc732848(v=ws.11)