windows基础命令
windowsc常用基础命令
- 注册表:
regedit
- 日志查看器:
eventvwr
- 组策略编辑器:
gpedit.msc
- 服务查看器:
services.msc
- 远程桌面:
mstsc
- 查看SID:
whoami /user
- 查看当前设备上的所有用户:
net user
- 查看设备上的指定用户:
net user 用户名
- 查看在线用户:
query user
- 注销在线用户:
logoff ID号
- 查看权限:
whoami
ps:格式为主机名+用户名
- 查询主机名:
hostname
- 查询详细权限:
whoami /priv
- 添加用户:
net user 用户名 密码 /add
- 删除用户:
net user 用户名 /del
- 查询组:
net localgroup
- 查询组内成员:
net localgroup 组名
- 将指定用户添加到指定组内:
net localgroup 组名 用户名 /add
- 查询系统信息:
systeminfo
- 查询系统架构:
echo %PROCESSOR_ARCHITECTURE%
- 使用powershell查询系统安装软件与版本信息:
Get-WmiObject -Class win32_product | Select-Object -Property name,version
- 使用wmic查询系统安装软件与版本信息(在win10以下版本使用):
wmic product get name,version
使用wmic查询系统服务与服务进程ID、服务状态:
wmic service list brief
查询进程:
tasklist
- 使用wmic查询进程:
wmic process list brief
- 筛选命令和linux的grep相近:<code>findstr</code>”>26.筛选命令和linux的grep相近:
findstr
- 结束进程命令:
taskkill /f /pid PID号
taskkill /f /im 进程名
- 显示每个进程中的服务信息:
tasklist /svc
- 使用wmic查看windows系统中补丁详细信息:
wmic qfe get caption,description,hotfixid,installedon
- 使用wmic显示windows系统中补丁号:
wmic qfe get hotfixid
- 查询arp表:
arp -a
- 查看防火墙配置信息:
netsh firewall show config
- 查询端口信息:
netstat -ano
- 查询代理信息:
reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
查询远程连接端口:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
清除DNS缓存:
ipconfig /flushdns
- 查询DNS缓存:
ipconfig /displaydns
- 查询MAC地址:
getmac
ipconfig /all
- 查看文本内容:
type *.txt
- 查看凭据管理器:
cmdkey /list
- 环境变量遍历:
set
windows 信息收集
本机信息
1、系统程序
收集系统信息,包括操作系统版本,已安装
补丁列表等。通常使⽤已下⽅法收集: |
注:其中 systeminfo 命令查询内容最全,但如果系统更新的补丁较多,可能会导致反应反应时间过⻓; 使⽤ webshell 执⾏此命令可能会因为超时导致⽆法正常回显,或回显内容⻓度过⻓,⽆法全部显示。在渗透测试systeminfo使用频率较高。
2、进程服务
tasklist /v # 查询正在运⾏的进程 |
常⻅杀软进程名:
{"360tray.exe", "360安全卫士"}, |
wmic startup get command,caption # 查看启动项
schtasks /query /fo LIST /v # 查看任务计划
windows ⾃带防⽕墙及特殊过滤规则等⽹络访问均可使⽤ netsh 及相关命令查看。
netsh firewall show config # 查看防⽕墙信息,但 firewall 命令已弃⽤,可使⽤ advfirewall 命令代替 |
3、用户信息
whoami # 当前⽤户 |
注: quser
、 qwinsta
和 query
命令只存在于允许安装 RDP 服务的主机上,官⽅描述其仅存在于 server 2012 及以上版本存在。其中 query termserver
命令存在问题,本地测试时与描述严重不符, ⽆法列出信息。
4、操作记录
cmd 和 powershell v3 以下的操作记录⽆法⻓时间报存,仅限当前窗⼝。
Get-History | Format-List -Property * # 查询 powershell 当前 窗⼝历史操作记录 |
可以通过向进程发送键盘内容的⽅式将运⾏中的窗⼝历史操作记录导出,详情参考⼦菜单 get- history
。
powershell v5 以上的操作历史记录会直接保存在指定⽂件中。直接查看即可。
# 查看 powershell 历史操作记录 |
powershell v3、v4 版本需要安装 Get-PSReadlineOption
。
msiexec /q /i PackageManagement_x64.msi
5、剪切板信息收集
不同⽤户之间的剪切板没有关联,使⽤微软⾃带的 mstsc 建⽴ rdp 远程连接时,剪切板内容会同步。
利⽤⼯具可以定期将剪切板内容导出,从⽽达到信息收集的⽬的。
当前剪切板
在empire中有⼀个Get-ClipboardContents.ps1,可以⽤empire或者coablt strike加载该脚本。或者也 可以⾃⼰编写相关脚本使⽤。是⼀个相对简单的⼯具。
rdplicp
在使⽤ mstsc 进⾏远程桌⾯的时候,会启动⼀个叫 rdpclip.exe 的进程,该进程的功能是同步服务端与客 户端的剪贴板。
由于启动该进程时,会⾃动同步剪切板内容,因此当⽬标⽬标机器与其他机器使⽤ mstsc 建⽴ RDP 远程 连接时,就可以通过读取 rdplicp.exe 进程数据,进⾏剪贴板窃取,以尽可能地获取更多地信息。
此外,由于由于该进程时后台运⾏的,当管理员同时⽤远程桌⾯登陆多个服务器,在其中得某⼀个服务器 上进⾏复制拷⻉操作时,会将数据同步到所有服务器的 rdplicp.exe 进程。
6、会话劫持
windows 系统下,不同⽤户登录时会有不同的 session ID ,⽽当前⽤户只能看到当前⽤户 session ID 下的内容。
例如: tsclient 只有建⽴远程连接的⽤户才可以看到,和访问到。
同过某些⽅式劫持其他⽤户会话,可以进⼀步收集信息。
tscon
在系统权限下可以通过 tscon 命令去接管其他⼈的桌⾯。但是需要注意的是,如果接管时⽬标⽤户正在连 接状态,则会被强制踢下线。
但是如果⽤户已经断开连接,此时接管桌⾯就不会产⽣其他额外影响。只要不破坏原有桌⾯打开内容,布 局,当断开连接后,⽤户再次登录基本⽆感。
tscon 需要劫持的会话ID /dest:当前⽤户会话名
但是需要注意的是,该命令需要系统权限执⾏。同时,由于是直接接管 session ID 对应的桌⾯,会把正在 使⽤的⽤户踢下线,所以是⽆法访问 tsclient
的。
同时,如果开启了远程桌⾯授权验证,则使⽤该⽅法时,需要输⼊密码才能进⼊桌⾯环境。
由于需要 system 权限才能启动,因此需要先提权⾄ system 。除第三⽅提权⼯具以外,还可以利⽤服务 启动时默认的 system 权限来执⾏。
⽅法如下:sc create sesshijack binpath= "cmd.exe /k tscon 需要劫持的会话ID /des t:当前⽤户会话名"
除使⽤服务的 system 权限执⾏以外。mimikatz 也具有该功能,或者使⽤ psexec 提权⾄ system 均 可。
RunInSession
RunInSession 这款⼯具可以实现在指定 session ID 下启动执⾏程序或脚本。利⽤该⼯具可以实现在不强 制其他⽤户下线的情况下获取情报,最直接的有剪切板窃取和 tsclient
的访问。
使⽤⽅法:RunInSession.exe $sessionid $
例如:
RunInSession.exe 2 c:\1.bat
该⼯具需要在管理员权限下执⾏。
⼯具下载地址:https://github.com/l3m0n/pentest_tools/blob/master/内⽹攻防/远程连 接/RunInSession.zip
⽹络发现
内⽹⽹络发现是⼀个很重要的信息收集内容,⼀般情况下是不建议使⽤扫描器扫描,尤其不建议使⽤ nmap,当然,如果是靶场,或是甲⽅授权就另当别论。
1、基本信息收集
ipconfig /all |
使⽤arp命令收集最近建⽴过连接的ip,但是此⽅法在某些时候⽆法收集到⽹段外的ip地址。
2、SPN信息收集
SPN:服务主体名称。使⽤Kerberos须为服务器注册SPN,因此可以在内⽹中扫描SPN,快速寻找内⽹中 注册的服务,SPN扫描可以规避像端⼝扫描的不确定性探测动作。 主要利⽤⼯具有:setspn、GetUserSPNs.vbs和Rubeus。
利⽤ Windows ⾃带的 setspn ⼯具
普通域⽤户权限执⾏即可
setspn -T domain.com -Q */*
利⽤ GetUserSPNs.vbs
使⽤ Rubeus ⼯具
3、协议探测
icmp 协议
直接回显
for /l %i in (1,1,255) do @ ping 10.0.0.%i -w 1 -n 1|find /i "ttl ="
输出⽂件@for /l %i in (1,1,255) do @ping -n 1 -w 40 192.168.0.%i & if erro rlevel 1 (echo 192.168.0.%i >> ip.txt) else (echo 192.168.0.%i >> ip.txt)
Netbios 协议
msf 扫描
msf > use auxiliary/scanner/netbios/nbname
nbtscan 扫描
下载:http://www.unixwiz.net/tools/nbtscan.html#download
nbtscan -m 192.168.1.0/24
UDP 协议
msf
msf > use auxiliary/scanner/discovery/udp_probe |
smb-version
python版:https://github.com/amitn322/smb-version
c#版:https://www.zcgonvh.com/post/CSharp_smb_version_Detection.html
SNMP 协议
msf
msf > use auxiliary/scanner/snmp/snmp_enum
4、系统⽇志
可以使⽤ wevtutil.exe psloglist.exe 或者 powershell 的 Get-WinEvent 模块进⾏⽇志导出,server 03 的域控可使⽤ eventquery.vbs 导出。
wevtutil不需要UAC, ⽀持很多过滤语法,若有需要请查看官⽅说明
# 查询登录⽇志语法 wevtutil qe security /f:text /q:*[System[(EventID=4624)]] |
本地使⽤LogParser⽇志分析⼯具整理导出的⽇志,然后去除重复数据、⽆效数据(以’$’结束的⽤户名)
LogParser.exe -i:EVT -o txt "SELECT TO_UPPERCASE(EXTRACT_TOKEN(Str ings,5,'|')) as USERNAME,TO_UPPERCASE(EXTRACT_TOKEN(Strings,1 8,'|')) as SOURCE_IP FROM C:\ProgramData\log.evtx" > C:\ProgramDat a\log.txt
# 导出域控登录⽇志到域控上 |
5、浏览器⽇志
收集浏览器访问记录。
# chrome |
浏览器的历史记录⽂件 history,是使⽤ sqlite 格式记录的,直接打开是⼀个⼆进制⽂件,可以下载到本地破解,或者直接替换查看。
需要注意的是,edge v44+ 版本的历史记录⽂件在⽤户登录状态下是锁定的。
6、DNS服务器记录
如果⽬标机器在域内,只需要按部就班收集域信息,准备域横向渗透即可。
但其中有⼀点单独提⼀下,⼀般在域环境中都会有⼀台 DNS 服务器,⼩企业或内⽹环境较⼩的可能会和 域控为同⼀台,⼤⼀些的企业,多为独⽴的 DNS 服务器。
由于 DNS 服务器的特性,因此,在 DNS 服务器上会存在⼤量内⽹地址解析记录,如果可以获取,会极⼤ 的⽅便内⽹拓扑展开,同时很多其他主机⽆法到达的地址,DNS 服务器是可以到达的。
dnscmd . /EnumZones # 列出 DNS 区域中当 前节点的资源记录 |
DNS 记录有正向解析和反向解析两种。
正向解析是从域名到IP,反向解析则是从IP到域名。
反向隔离和正向隔离相同,都会有⼀个对应的区域,因此,查询⽅式与正向记录相同。
DNS 服务器还存在域传送漏洞。可以直接获得 DNS 记录。
nslookup -type=all_ldap._tcp.dc.greyfinger.com |
域信息查询
1、基本信息收集
域信息收集,需要当前⽤户为域⽤户。本地⽤户⽆法执⾏域命令查询域内容。 但是如果⽬标机器为域内机器,域⽤户未登陆,此时 system 权限下可以使⽤机器身份查询域命令。
net config workstation # 查询当前登录域 |
想要定位域管和域控机器,可以查询 domain admin
和 domain controllers
组,需要注意的是,组 名会随系统语⾔变化⽽变化,如 domain controllers
会变化成 domaine contrôleurs
。
在域内其他机器上,查询组是 net group /domain
,⽽在域控上则是 net group
。
2、dsquery
dsquery命令很少使⽤,⽽且限制较⼤仅能在域控上执⾏,所以相对⽽⾔较为鸡肋,但是在⼀定条件下还 是具有⼀定的使⽤价值。
dsquery computer # 查询⽬录中的计算机 dsquery contact # 查询⽬录中的联系⼈ |
3、powershell
# 查询当前Domain信息 |
配置⽂件收集
1、findstr命令搜索
与 linux 系统下的 find 命令类似,findstr 是 Window 系统⾃带的命令,⽤途是查找指定的⼀个或多个⽂ 件⽂件中包含某些特定字符串的⾏,并将该⾏完整的信息打印出来,或者打印查询字符串所在的⽂件名。
常⽤命令有:
/S # 在当前⽬录和所有⼦⽬录中搜索匹配⽂件。 |
2、常⻅位置
配置⽂件
IIS配置⽂件路径为: %windir%\system32\inetsrv\config\applicationHost.config
使⽤appcmd的⽅式可以快速导出所需内容:
%windir%\system32\inetsrv\appcmd list site /config |
密码保存
navicat
|数据库|路径|
|—-|—-|
|MySQL | HKEYCURRENTUSER\Software\PremiumSoft \Navicat\Servers\ |
|MariaDB |HKEYCURRENTUSER\Software\PremiumSoft \NavicatMARIADB\Servers\ |
|MongoDB |HKEYCURRENTUSER\Software\PremiumSoft \NavicatMONGODB\Servers\ |
|Microsoft SQL |HKEYCURRENTUSER\Software\PremiumSoft \NavicatMSSQL\Servers|
|Oracle |HKEYCURRENTUSER\Software\PremiumSoft \NavicatOra\Servers\ |
|PostgreSQL |HKEYCURRENTUSER\Software\PremiumSoft \NavicatPG\Servers\ |
|SQLite |HKEYCURRENTUSER\Software\PremiumSoft \NavicatSQLite\Servers|
SecureCRT
系统版本 | 路径 |
---|---|
xp/win2003 | C:\Documents and Settings\USERNAME\Application Data\VanDyke\Config\Sessions |
win7/win2008以上 | C:\Users\USERNAME\AppData\Roaming\Va nDyke\Config\Sessions |
Xshell
|版本 |路径 |
|—-|—-|
|Xshell 5| %userprofile%\Documents\NetSarang\Xshell\Sessions|
|Xshell 6 |%userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions|
WinSCP
HKCU\Software\Martin Prikryl\WinSCP 2\Sessions |
VNC
版本 | 路径 | 类型 |
---|---|---|
RealVNC | HKEYLOCALMACHINE\SOFT WARE\RealVNC\vncserver | Password |
TightVNC | HKEYCURRENTUSER\Softwa re\TightVNC\Server Value | Password or PasswordViewOnly |
TigerVNC | HKEYLOCALUSER\Software\ TigerVNC\WinVNC4 | Password |
UltraVNC | C:\Program Files\UltraVNC\ultravnc.ini | passwd or passwd2 |
DOS命令
1.gpedit.msc—–组策略 |
参考:
https://www.cnblogs.com/1-Ry/p/15156357.html
https://www.cnblogs.com/hookjoy/p/10899119.html
GFinger的windows信息收集
部分资料网络google与百度,参考资料作者来源不详