内网渗透(持续更新)

内网渗透,最重要得是定位问题。所以前期的调研和收集是非常重要的一项工作。
标:本文多数内容是整合的知识点。


前期基本信息探测

尽可能详细得分析出网段信息、各部门ip段、重点找出IT运维部、OA、邮箱服务器、人力资源管理等。
最后画一张组织结构图,这样在内网定位的时候,无论是针对内网查找资料还是针对特殊任务都是非常实用的一项技术。
不过信息收集,不是一天两天就能完成的事情,这种事情要持之以恒。

人事组织结构图

demo:
安创科技

思路:这种人事图,除了在外部站点上有,也可以到首页去查找关于我们,有一些简单的说明,然后再去招聘网找各式的岗位名称,最后连蒙带猜(没有这样的操作),收集尽量精确能到各个人员。当然,想要详细,就得通过不同的渠道获取。

ip分布

思路:

  1. 一般大公司有内部门户系统,可通过内部门户系统公开链接找出部门ip段(如果找到路由也很惊喜)
  2. 内网中可通过路由器、交换机等设备命令执行、snmp、弱口令获取网络拓扑

切入点(起点)

切入点.png

  1. Web门户系统getshell—->system权限;
  2. 邮件服务器;
  3. 邮件服务器获取信息中得出VPN账密和IP地址;
  4. 路由器建立VPN进入;
  5. 待更新…

靶机信息收集

主要针对三种:

  1. 基于命令形式的,包括权限信息,机器信息,进程端口,网络连接,共享、会话等等;
  2. 基于应用与文件形式的,例如一些敏感文件,密码文件,浏览器,远程连接客户端等;
  3. 还有一种是最直接的,例如抓取本地明文与hash,键盘记录,屏幕记录等。

网上已经有大量相关的资源与文章了,这里就不再占篇幅了,只说点额外的不常见技巧。

命令行形式

包括但不限于一下几点

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
hostname #主机名
systeminfo #系统信息(所在域,开机时间,安装信息,补丁情况,系统版本)
set #环境变量
net user #查看默认用户
net view #显示当前域或工作组中计算机的列表
net localgroup #查看用户组
net localgroup Administrators #查看Administrators组所有用户(包括隐藏用户)
query user #查看当前会话(window7 64以上)
tasklist /v #显示当前进程和进程用户
net config workstation #查看当前登陆用户信息
net statistics workstation #查看主机开机时间
net share #查看共享文件夹

不常用命令

1
2
3
4
5
6
7
8
9
10
whoami /all 查看Mandatory Label看我们是否过uac
net session 查看有没有远程连过来的session
cmdkey /l 看是否保存了登陆凭证.(凭据管理器)
echo %logonserver% 查看登陆域
net stitastics server 查看登陆时间
Wmic 能让攻击者大量利用来获取系统信息的系统自带工具
wmic qfe list #获取补丁信息
Netsh 做端口转发
spn –l administrator 域内查某个用户spn记录
dsquery | nltest 域内信息收集

应用与文件形式

虽然标题不错,但是内容只是去翻文件,包括一些应用的配置文件,密码文件等。
有时候会碰到一些加密的office办公软件,例如word,excel 这些。

如果是低版本如2003的话,攻击者会在百度搜一些网上的破解软件进行破解(会联网)。
如果是高版本的话,往往在目标用户开着文件时使用微软SysinternalsSuite套装中的procdump将内存dump回去,用内存查看器直接查看文件内容。

因此就算有些敏感文件加密了照样能够被攻击者获取敏感信息。

hash和明文

这一步使用mimikatz基本就足够了,也分exe、dll与ps三个版本,攻击者会分情况使用。
屏幕截图在windows中也有系统自带psr命令能够做截图等等(但是只有windows7以上才会有)。
低版本的可以使用nircmd,使用为:nircmdc.exe savescreenshot 1.png


网络环境的判断

  1. 机器所处位置区域的判断;
  2. 机器角色的判断;
  3. 进出口流量是否连通的判断,是否出的去,进的来。

位置的判断

位置判断是指机器处于网络拓扑中的某个区域,是在DMZ区,办公网,还是核心区,核心DB等多个位置,当然这里的区域并不是绝对的,只是大概的一个环境,不同的地方网络环境不一样,区域的界限也不一定明显。

角色的判断

机器角色的判断指判断已经控制的机器是普通Web服务器、开发测试服务器、公共服务器、文件服务器还是代理服务器、DNS服务器、存储服务器等等。具体的判断是通过对机器内的主机名、文件、网络连接等多种情况进行综合判断的。

连通性的判断

出口流量是否连通的判断指机器是否能上外网这些,要综合判断协议(tcp\http\dns\icmp等协议)与端口(常见能出去的端口有80,8080,443,53,110,123等)。在这里还有一种是网络内网设置了代理服务器的情况,攻击者通常会查看环境变量set,主机名是否有proxy字样的机器,注册表是否有写明代理地址或指定pac代理文件等。


横向渗透

如果是workgroup横向,攻击者会尝试web漏洞挖掘、密码猜解等。
如果是domain横向,方法就比较多了,例如AD2008 gpp 、ms14-068 、kerberoast 、配置错误、一直抓密码等。

代理转发

渗透测试-之-代理篇

默认权限配置

1
2
3
4
5
6
7
[+]普通机器
允许Console:administrator组(domain admins),users组(domain users),backup operators组
允许rdp:administrator组(domain admins),Remote desktop users组
[+]域控AD
允许Console:administrator组,backup operators组,account operators组,print operators组,server operators组
允许rdp:administrator组,Remote desktop users组

如果出现配置错误,那就是权限配置问题。

tips:当某些普通\不普通用户加入AD的rdp组或其他管理员组,当攻击者拿到这些用户的权限时就相当于可以获取到域控制器的权限了。

远程命令执行方式

例如at\schtasks\psexec\wmic\sc\ps网上有很多相关资源也不占篇幅了,只提一个很少提的。从2012r2 起,他们开了一个端口叫5985,原理跟大家常说的powershell remote是一样的,基于winrm服务,于是可以这样执行。又是一个系统自带的远程管理工具。

1
winrs -r:192.168.22.33 -u:administrator -p:p@assw0rd ipconfig

域管理员定位

一是日志,二是会话。
日志指的的本地机器的管理员日志。可以使用脚本或wevtutil导出查看
会话是域内每个机器的登陆会话,可以匿名查询,无需权限。可以使用netsess.exe或powerview查询

1
PS C:\Users\RcoIl> get-netsession -computername "192.168.1.100"

域内信息探测

常用命令

1
2
3
4
5
6
7
8
9
10
net user /domain #查看域用户
net view /domain #查看有几个域
net view /domain:XXX #查看此域内电脑
net group /domain #查询域里面的组
net group "domain computers" /domain #查看加入到域内的所有计算机名
net group "domain admins" /domain #查看域管理员
nltest /dclist:xxx #查看域控制器
net group "domain controllers" /domain #查看域控制器
net user hacker /domain #获得指定账户的详细信息
net accounts /domain #获得域密码策略设置,密码长短,错误锁定等信息

dsquery 命令 查询 AD

1
2
3
4
5
6
7
8
9
10
11
dsquery computer - 查找目录中的计算机。
dsquery contact - 查找目录中的联系人。
dsquery subnet - 查找目录中的子网。
dsquery group - 查找目录中的组。
dsquery ou - 查找目录中的组织单位。
dsquery site - 查找目录中的站点。
dsquery server - 查找目录中的 AD DC/LDS 实例。
dsquery user - 查找目录中的用户。
dsquery quota - 查找目录中的配额规定。
dsquery partition - 查找目录中的分区。
dsquery * - 用通用的 LDAP 查询来查找目录中的任何对象。

Net系列命令获取域内信息

1
2
3
4
5
6
7
8
9
Csvde/ldifde/dsquery/adfind/ldapsearch #探测更详细信息
使用`Get-SPN`(powershell脚本LDAP中快速查询符合指定得用户、组、或者SPN服务名称)
Nslookup -type=SRV_ldap._tcp #(寻找域控)
tasklist /v #列出进程和进程所有者(看是否有域管登陆)
PowerView #(powershell脚本 辅助找寻定位关键用户)
WinScanX.exe #远程信息刺探
Winfo.exe #遍历远程用户名
nmap smb-enum-sessions.nse #(引擎来获取远程机器的登陆session,并且不需要管理权。)
netview.exe`#(它利用`NetSessionEnum`来寻找登陆sessions,利用`NetShareEnum`来找寻共享,利用`NetWkstaUserEnum`来枚举登陆的用户)


linux

  1. cat /etc/nsswitch
    看看密码登陆策略,我可以看到使用了file ldap模式
  2. less /etc/ldap.conf
    base ou=People,dc=unix-center,dc=net
    找到ou,dc,dc设置
  3. 查找10条用户记录
    ldapsearch -h 192.168.2.2 -x -z 10 -p指定端口
  4. 查看NFS连接
    showmount -e ip
  5. 查找管理员信息
    匿名方式
    1
    ldapsearch -x -D "cn=administrator,cn=People,dc=unix-center,dc=net" -b "cn=administrator,cn=People,dc=unix-center,dc=net" -h 192.168.2.2

有密码形式

1
ldapsearch -x -W -D "cn=administrator,cn=People,dc=unix-center,dc=net" -b "cn=administrator,cn=People,dc=unix-center,dc=net" -h 192.168.2.2


获取域管权限

账户枚举

(nbtstat -A\nmapd等)、hash注入 (mimikatz) 、bypassuac、 session切换等

组策略漏洞(GPP)

域管理员使用GPP来配置和操作域,常见的操作有远程创建本地用户、映射打印机、映射磁盘等,这些操作有时候需要提供账号密码。当组策略进行分发时,会在SYSVOL目录下生成一个xml文件,理所当然的前面提供的账号密码都保存在这个xml文件中,而密码是经过AES加密得,也就是说完全可逆的加密算法,而微软同时也很照顾的公布了加密密钥,所以任何域普通用户就可以读取这些xml文件并使用公开得AES密钥破解密码。

MS14-068 KERBEROS漏洞

Benjamin Delpy(Mimikatz的作者)写了一个MS14-068的利用工具,叫Kekeo,是PyKEX的升级版。它能够找到并定位有漏洞的域控,在打了补丁和有2012/2012R2域控得情况下仍能凑效。
在利用MS14-068之前,建议先使用klist /purge清除服务器端缓存的Kerberos凭据。

MS17-010

17年是个好年。

相同密码登陆

如果内网主机的本地管理员账户密码相同且允许本地账户登陆域内其他机器,那么可以通过以获取的hash或明文

一般步骤:

  1. 远程登陆到任意一台主机;
  2. 获取一台域用户主机的权限;
  3. Dump内存获得hash(或明文);
  4. 通过pass the hash 或 明文 尝试登陆其他主机;
  5. 继续搜集hash 或明文 并尝试远程登陆;
  6. 直到获得域管理员账户hash,登陆域控,最终成功控制整个域

域登陆缓存mscash
使用reg命令提取sam、system、security、然后用creddump7提取mscash。

利用漏洞配置不当获取更多主机权限

  1. 常见应用漏洞:
    struts2、zabbix、axis、ImageMagic、fastcgi、Shellshock、redis未授权访问、Hadoop、weblogic、jboss、WebSphere、Coldfusion
  2. 常见语言反序列化漏洞
    php、Java、python、ruby、node.js
  3. 数据库漏洞及配置不当
    mssql Get-SQLServerAccess、MySQL低版本hash登陆、MySQL低版本Authentication Bypass、域内mssql凭证获取密码、monggodb未授权访问、memcache配置不当
  4. 内网中很多web应用存在常见漏洞、使用有漏洞的中间件和框架、弱口令及配置不当(注入、任意文件读取、备份、源码泄漏(rsync、git、svn、DS_Store)、代码执行、xss、弱口令、上传漏洞、权限绕过…)
  5. web应用、及数据库中寻找其他服务器密码信息(ftp、mail、smb、ldap存储、sql...
  6. 系统备份文件(ghost)中读密码
  7. 在已有控制权限主机中,查看各浏览器书签cookie存储密码键盘记录收集相关敏感信息、查询注册表中保存密码、读取各客户端连接密码、putty dll注入、putty密码截取、ssh连接密码,以获取更多主机权限
    推荐工具:NetRipperPuttyrider.exeProwserPasswordDump.exeLaZagne.exe
  8. ms08-067远程溢出(极少能碰到)
  9. cmdkey /list 远程终端可信任连接连接netpass.exe读取该密码
  10. arp欺骗中间人攻击(替换sql数据包、认证凭证获取、密码获取极大不到万不得已不会用)
  11. WPAD中间人攻击(全称网络代理自动发现协议、截获凭证该种方法不需要ARP欺骗,比较好用的一种方法(使用Responder.py/net-creds.py))
  12. 翻阅相关文件及以控制数据库中可能存储配置口令(别忘了回收站)
  13. 用已有控制权限的邮箱账号以及前期所了解到的信息进行欺骗(社会工程学)
  14. 定向浏览器信息ip信息定向挂马(0day)
  15. 用以收集的密码(组合变换密码)对各服务进行爆破
  16. 应用0day攻击…

做MIMT这块的两个工具

1
2
responder.py &&Invoke-Inveigh.ps1 ,经常被用来做信息收集。
responder.py –A 分析模式

Powerview.ps1 域渗透利器

最后,如果攻击者终于拿到了域控了,要做的事就是信息获取,包括全域hash(mimikatz),ldap信息(csvde),dns信息(dnscmd)等,碰到文件占用的情况还会使用卷影复制。

除此之外攻击者还可能利用域控干点其他事,例如当问权限设置严格,攻击者所在位置访问不了目标机器,甚至域控本机也访问不了,只能是目标单向访问的情况,例如攻击者找不到目标ip,这时攻击者就可以拿出域组策略GPO这个大杀器了,当然相对应的动静会偏大。


整合参考:
黑客游走于企业windows内网的几种姿势
内网渗透——网络环境的判断

!坚持技术分享,您的支持将鼓励我继续创作!