SMB(Server Message Block)协议,可用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居就是靠它实现的。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API)。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,甚至Windows NT也没有全部支持到,最近微软又把 SMB 改名为 CIFS(Common Internet File System),并且加入了许多新的特色。SMB协议一般端口使用为139,445,CIFS协议有三个版本:SMB、SMB2、SMB3。
NTLM
在type2返回Challenge的过程中,同时返回了操作系统类型,主机名,netbios名等等。这也就意味着如果我们在能跟服务器进行NTLM交流中,给服务器发送一个type1的请求,服务器返回type2的响应,这一步,我们就可以得到很多信息。SMBv1和SMBv2的数据包结构是不同的
SMBv1
使用非攻NTLMINFO探测SMB接口,抓包通过wireshark分析,包含操作系统类型的数据包由SMB Header和Response组成:
我们的目的是获取smb数据包的NTLM数据,然后对NTLM数据包解析,NTLM数据包上一层是GSS-API,首先找到GSS-API在整个数据包的偏移量,SMB的数据包结构长度如下:
SMB Header: 32 byte
Word Count: 1 byte
AndXCommand: 1 byte
Reserved: 1 byte
AndXOffset: 2 byte
Action: 2 byte
Security Blob Length: 2 byte (表示Security Blob的长度,这里的hex是 0f 10,小端转换为010f,再转换成10进制就是271,对应Security Blob的长度)
Byte Count: 2 byte (表示Security Blob加上NativeOS和Native Lan的长度)
Security Blob: 可变长度,取决于Security Blob Length
上面的数据包结构的关键数据是Security Blob Length
和Byte Content
,前者表示GSS-API的整个数据包长度,后者表示GSS-API和Native OS加上Native LM的数据长度:
GSS-API的长度是271 Byte
Native OS的长度是42 Byte
Read More
安装
参考链接里有详细的安装步骤,测试客户端是Windows,安装了如下软件:
- sysmon.exe(配置文件)
.\sysmon64.exe -accepteula -i c:\windows\config.xml
- winlogbeat.exe
.\install-service-winlogbeat.ps1
.\winlogbeat.exe setup -e
- ElasticAgent.exe
.\elastic-agent.exe install --insecure -f --fleet-server-es=<ES> --fleet-server-service-token=<token>
规则监测和绕过
规则有5种查询,一般使用EQL(Event Query Language)查询类型:
SIEM有内置很多规则,默认是关闭状态,这些规则都是ATT&CK框架攻击行为转化而来的,例如windows下的whoami
查询规则(正经人谁查whoami啊):
process where event.type in ("start", "process_started") and process.name : "whoami.exe"
我们拿这条规则做分析,这条规则匹配了当进程开始的时候,进程名为whoami.exe
的时候触发,所以我们把whoami.exe
复制一下,就可以绕过去了:
copy C:\Windows\System32\whoami.exe C:\Windows\temp\x.exe
C:\Windows\temp\x.exe
是不是把siem想的简单了,这跟通过复制net.exe
绕过添加用户一模一样,仔细观察下elk里面的字段,可以发现process.pe.original_file_name
仍然保留了whoami.exe
,这是PE文件里面固定的,所以我们手动把预警规则修改一下:
process where event.type in ("start", "process_started") and process.pe.original_file_name: "whoami.exe"
Read More
SilverFish_TLPWHITE
起点
根据FireEye发布的IOC,有一个域名是databasegalore.com,这个域名下的IP在2304端口起了PowerMTA服务,web目录扫描之后发现example.php。PTI团队根据这两个网页的设备指纹和PowerMTA服务,扫描了全网的IPv4地址,发现一个IP地址: 81.4.122.203
,然后PTI团队对IP下的C段进行渗透测试,发现81.4.122.101
存在一个C2服务器。
C2分析
收集信息如下:
- ID
- UUID
- Instance
- IP
- Country
- Domain\User@Computer
- OS
- Build
- Architecture
- Antivirus
- Is Admin
- Integrity Level
- UAC Setting
- ConsentPromptBehaviorAdmin • PromptOnSecureDesktop
- First visit
每个受害者页面都可以发送攻击指令,有如下:
看了下是命令执行和UAC绕过比较多,C2服务器的防护措施有如下:
- 使用AppArmor隔离环境
- 关闭访问日志(web日志、SSH登录日志、命令行日志)
- 使用IPTABLES只允许白名单IP访问
Read More
0x01. 基本知识
- 在pom.xml里面有这样的配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
- 没有开启安全设置
management:
security:
enabled: false
health:
elasticsearch:
enabled: false
metrics:
export:
prometheus:
enabled: true
jmx:
enabled: true
endpoints:
web:
exposure:
include: '*'
base-path: /auto
服务端可以通过修改配置文件来改变Actuator的根路径:management.endpoints.web.base-path=/monitor
搜索github的源代码,可以看到类似的设置:
0x02 漏洞利用
在配置不当的时候,可能暴露以下路由:
/actuator
/auditevents
/autoconfig
/beans
/caches
/conditions
/configprops
/docs
/dump
/env
/flyway
/health
/heapdump
/httptrace
/info
/intergrationgraph
/jolokia
/logfile
/loggers
/liquibase
/metrics
/mappings
/prometheus
/refresh
/scheduledtasks
/sessions
/shutdown
/trace
/threaddump
/actuator/auditevents
/actuator/beans
/actuator/health
/actuator/conditions
/actuator/configprops
/actuator/env
/actuator/info
/actuator/loggers
/actuator/heapdump
/actuator/threaddump
/actuator/metrics
/actuator/scheduledtasks
/actuator/httptrace
/actuator/mappings
/actuator/jolokia
/actuator/hystrix.stream
Read More
背景需求
不管一个什么形式的后门:定时任务、dll劫持、开机启动…,当我设置的后门运行的时候,我想掌握后门的启动时间、触发IP等上环境,所以这篇文章是在shellcode分离免杀的基础上做了尝试性扩展
考虑这样的场景:
- 后门被静态分析
- 后门被动态分析
- shellcode被提取之后触发
- …
在shellcode分离免杀的基础上扩展还是比较容易的,当客户端请求远程shellcode托管服务器的时候,增加一个机器人,然后发起一个上线通知:If This Then That,这样太简单了,我们再多加点料,比如:
- 不带合理参数请求shellcode的URL时候,发起警告
- 当木马运行在恶意环境的时候,发起警告
- 当木马上线IP不在服务端列表
- 当木马上线主机的设备指纹不在服务端列表
- shellcode托管服务随时可以关闭打开
- shellcode托管服务随时可以新增删除木马上线IP或者设备指纹
准备材料
- 一台VPS:托管shellcode,通知slack机器人
- 一个AWS账号隐藏C2(CloudFront)
- Slack:接收通知,使用
Slash commands
功能控制shellcode托管服务
托管shellcode流程
Read More