蓝队防御知识汇总
蓝队防御知识汇总
5un5et写在前面
HVV干了也有一段时间了,感觉实际场景中的蓝队应急跟之前看文章学习的
还是有挺大区别,果然真正去行动才能理解学到的知识如何运用。
所以本着知是行之始 行是知之成的原则,重新整理了以前的蓝队笔记,加了些应急场景中的具体命令
流量分析
蚁剑流量特征
- 请求体以
@ini_set("display_errors","0");@set_time_limit(0)
开头。 - 如果要对数据加密,那么必须将解码函数在请求体中一并发送,而解码函数没法加密,因此会直接暴露出来,比如能看见
base64_decode
这样的函数明文传输。 - 默认的 user-agent 请求头是 antsword xxx(可修改),比如:
User-Agent: antSword/v2.1
。 - 蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以
_0x.....=
这种形式(下划线可替换为其他)所以,以_0x
开头的参数名,后面为加密数据的数据包也可识别为蚁剑的流量特征。
冰蝎流量特征
冰蝎 2.0
使用 AES 加密 + base64 编码。这个版本冰蝎发送加密的 webshell 之前,会先通过 GET 方式向服务器申请一个 AES 密钥,服务器端返回生成的 16 位密钥,之后的 webshell 使用这个密钥进行加密,上传到服务器再由服务器解密。
- 在第一步,冰蝎必须需要获得密钥,具体流量特征:是一个 get 请求,url 中包含
?pass=
(参数名称可变)。 - 第一步的响应中包含 16 位的密钥。
- 进行请求时内置了十几个 User-Agent 头,每次请求时会随机选择其中的一个。因此当发现一个 ip 的请求头中的 user-agent 在频繁变换,就可能是冰蝎。
冰蝎 3.0
使用 AES 加密 + base64 编码,取消了 2.0 的动态获取密钥,使用固定的连接密钥。AES 加密的密钥为 webshell 连接密码的 MD5 的前 16 位,默认连接密码是 “ rebeyond “ ( 即密钥是 md5(‘rebeyond’)[0:16] = e45e329feb5d925b
)。
- 进行请求时内置了十几个 User-Agent 头,每次请求时会随机选择其中的一个。因此当发现一个 ip 的请求头中的 user-agent 在频繁变换,就可能是冰蝎。
- 连接 jsp 的 webshell 的请求数据包中的 content-type 字段常见为 application/octet-stream 。
冰蝎 4.0
可以自定义传输协议和加密方式。
推荐博客:https://javaziliao.com/post/706.html
- 提供了传输协议自定义的功能,让用户对流量的加密和解密进行自定义,实现流量加解密协议的去中心化。4.0 版本不再有连接密码的概念,自定义传输协议的算法就是连接密码。
- Accept 字段(弱特征),通常是
Accept: application/json, text/javascript, */*; q=0.01
,意思是浏览器可接受任何文件,但最倾向 application/json 和 text/javascript 。 - Content-Type 字段(弱特征),通常是
Content-type: Application/x-www-form-urlencoded
。 - 与冰蝎的前述版本相似,进行请求时内置了十几个 User-Agent 头,每次请求时会随机选择其中的一个。
- 连接的端口有一定的特征,冰蝎与 webshell 建立连接的同时,javaw 也与目的主机建立 tcp 连接,每次连接使用本地端口在 49700 左右(就是比较大的端口),每连接一次,每建立一次新的连接,端口就依次增加。
- 使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有
Connection: Keep-Alive
- 有固定的请求头和响应头,请求字节头:
dFAXQV1LORcHRQtLRlwMAhwFTAg/M
,响应字节头:TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
。 - 默认时,冰蝎 webshell 都有 “ e45e329feb5d925b ” 一串密钥,与冰蝎 3.0 相同。
哥斯拉流量特征
- User-Agent (弱特征):哥斯拉客户端使用 JAVA 语言编写,在默认的情况下,如果不修改 User-Agent ,User-Agent 会类似于Java/1.8.0_121(具体什么版本取决于 JDK 环境版本)。但是哥斯拉支持自定义 HTTP 头部,这个默认特征是可以很容易去除的。
- Accept(弱特征):默认为:
text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
,与冰蝎相似。 - Cookie(强特征):在请求包的 Cookie 中有一个非常致命的特征,最后的分号。标准的 HTTP 请求中最后一个 Cookie 的值是不应该出现 ; 的,这个可以作为现阶段的一个辅助识别特征。后续可能会修复。
- 响应体特征(强特征):对于请求体和响应体,哥斯拉支持对加密的数据进行 base64 编码以及原始的加密 raw 两种形式的通讯数据。如果请求体采用 base64 编码,响应体返回的也是 base64 编码的数据。在使用 base64 编码时,响应体会出现一个很明显的固定特征,这个特征是客户端和服务端编写的时候引入的。即会把一个 32 位的 md5 字符串拆成两半,分别放在 base64 编码数据的前后两端,整个响应包的结构体征为:md5 前十六位+ base64 + md5 后十六位。
- 一个 tcp 连接里面包含三次 http 请求和三次 http 响应,“ 三去三回 ”。
- jsp 类型的 webshell 连接密码默认为 pass ,所以请求体中会出现 pass=xxx 这样的特征,等号后面很长很长。
菜刀流量特征
菜刀使用一句话木马,payload 部分明文传输,特征十分明显。
不过,最开始使用明文传输,后来使用 base64 加密,加密的时候必须把解密函数一起发送过去,例如:
(base64_decode ($_POST [z0]))
,将攻击 payload 进行 Base64 解码,因为菜刀默认是使用 Base64 编码,以避免被检测;
&z0=QGluaV9zZXQ...
,该部分是传递攻击 payload,此参数 z0 对应 $_POST [z0] 接收到的数据,该参数值是使用 Base64 编码的,所以可以利用 base64 解码可以看到攻击明文。
CS 流量特征
推荐博客:Cobalt Strike 流量特征分析
Cobalt Strike 是以 C/S 架构为基础的渗透测试软件,分为 client 端、server 端和被控端。
Cobalt Strike 基本工作流程:
- 被控端发送心跳包
- server 端收到心跳包并记录被控端主机信息
- 被控端再次发送心跳包询问 server 端是否有指令
- client 端发送指令给 server 端
- server 端接受指令并加密,发送给被控端
- 被控端接受指令并解密,把执行结果返回到 server 端
流量特征
HTTP 特征:
- 在流量中,通过 http 协议的 url 路径,在 checksum8 解密算法计算后,32 位的后门得到的结果是 92 ,64 位的后门得到的结果是 93 ,该特征符合未魔改 Cobalt Strike 的流量特征。
- 老版本的 cobalt strike 中 user-agent 头是固定不变的,可以作为一个特征,新版本的 cobalt strike 中的 user-agent 头是会每次都变化的。
- 在使用 cobalt strike 下达指令时,会出现请求是 POST 类型但是出现 GET 请求参数
/sumbit.php?id=xxx
的特征,该特征可以判断cobalt strike 。 - 即使 cobalt strike 进行了证书文件的魔改,可以消除数据包的部分特征,但仍有部分特征没有修改,例如该图中是修改了 cobalt strike 证书文件的数据包情况,但是遗留了GET /cx 和 POST /q.cgi 这两个特征。
- 在 cobalt strike 的心跳包中包含着 cobalt strike 的一些信息,例如 ip ,端口号等等,但是这些信息时加密的,因此我们可以利用 Didier stevens suite 这款工具进行解密。
HTTPS 特征:
如果没有修改 cobalt strike 的默认证书或者自己手动加载自定义证书,默认的 cobalt strike 证书可以直接判断出该工具是 cobalt strike 。
在数据包的 client hello 中,数据包有 JA3 值,和操作系统有关,每个操作系统都有固定的值,例如 windows11 会显示:
JA3:db36bad574044a5104a59b0c676991ef
JA3:4d5efa96609dc906f796e63cff009c2a
在数据包的 server hello 中,数据包有 JA3s ,和操作系统有关,每个操作系统都有固定的值,例如 windows11 会显示
JA3s:15af977ce25de452b96affa2addb1036
JA3s:2253c82f03b621c5144709b393fde2c9
TCP 三次握手之后,client 发送 client hello 给 server ,告诉 server 支持的 TLS 的版本以及加密套件,以及第一个随机数 random ;
server 发送 server hello 给 client ,确认支持的版本,生成一个随机数 random(第二个随机数),并选择了一种加密套件;
分析研判
cpu 资源占用分析
查找 CPU 使用率最高的前 10 个进程:
1 | ps -aux --sort=-pcpu|head -10 |
ps -aux
:这个命令会列出所有当前运行的进程的详细信息。--sort=-pcpu
:这个选项会按照 CPU 使用率的降序对进程进行排序。head -10
:这个命令会只显示前 10 行的输出。
实时显示系统中各个进程的资源占用状况,并按照 CPU 使用率的降序进行排序:
1 | top -c -o %CPU |
实时显示系统中各个进程的资源占用状况,并按照内存占用率的降序进行排序:
1 | top -c -o %MEM |
显示文件系统的磁盘空间使用情况:
1 | df -Th |
-T
:这个选项会显示每个文件系统的类型。-h
:这个选项会以人类可读的格式(例如 KB、MB、GB)显示磁盘空间的使用情况。
查看系统进程
1 | ps -aux |
查看网络连接
1 | netstat |
Linux:netstat -anlutp
- **
-a
**:显示所有的网络连接,包括监听和非监听的连接。 - **
-n
**:不解析主机名、端口或用户名称,直接显示IP地址和端口号,这样可以提高命令的执行速度。 - **
-l
**:仅显示监听的套接字,即那些正在等待连接的端口。 - **
-u
**:显示UDP协议的套接字。 - **
-t
**:显示TCP协议的套接字。 - **
-p
**:显示与每个套接字关联的进程 ID 和进程名称。
Windows:netstat -anob
- **
-a
**:显示所有连接和监听端口。 - **
-n
**:以数字形式显示地址和端口号,不进行DNS解析。 - **
-o
**:显示每个连接关联的进程 ID(PID)。 - **
-b
**:显示每个连接或监听端口的可执行文件(需要管理员权限)。
系统日志
1 | 整体日志 /var/log/message |
各种应用日志
/var/log/vsftp.log
是 VSFTP 的日志文件。VSFTP 是一个用于 FTP 服务的服务器软件,它记录了服务器的上传和下载情况。/var/log/httpd/access.log
是 Apache HTTP 服务器 的访问日志。这个日志文件记录了所有对 Web 服务器的访问活动。/var/log/samba
是 Samba 的日志文件。Samba 是一种在 Linux 和 Unix 系统上实现 SMB 协议的软件,用于共享文件和打印机等资源。/var/log/nfs
是 NFS (Network File System) 的日志文件。NFS 是一种网络文件系统协议,用于在网络上共享文件。
日志分析
针对密码爆破,可以用以下命令按照登录失败次数从高到低列出用户名:
1 | grep "Failed password" /var/log/secure| perl -e 'while($_=<>){ /for(.*?) from/; print "$1\ n";}'|uniq -c|sort -nr |
按照登录失败次数从高到低列出 IP 地址:
1 | grep "Failed password" /var/log/secure| grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0- 9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.( 25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0- 5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c |
统计并排序出成功登录的 IP 地址和对应的次数:
1 | grep "Accepted " /var/log/secure | awk '{ print $11}' | sort | uniq -c | sort -nr | more |
历史命令
查看历史命令:
1 | history |
系统用户
查看超级用户(uid=0):
1 | awk -F: '$3==0{print $1}' /etc/passwd |
who
查看当前登录的用户
w
显示已登陆的用户,且在执行的命令
last
查看登录成功的用户
lastb
查看最近登录失败的用户
lastlog
查看所有用户最近登录的时间,
需要注意的是 lastlog
命令会查看 /var/log/lastlog
文件来获取用户的最后登录信息。然而,这个文件并不会实时更新。当用户登录系统时,系统会记录登录事件到 /var/run/utmp
文件,然后 last
命令会读取这个文件来显示登录信息。但是,lastlog
命令并不会读取 /var/run/utmp
文件,它只会读取 /var/log/lastlog
文件。因此,即使已经以 root 用户登录了系统,lastlog
命令可能仍然会显示 root 用户从未登录过。
此外,如果是通过 su
命令或 sudo -i
命令切换到 root 用户,那么这种切换并不会被记录为一次登录事件,因此 lastlog
命令也不会显示这种切换。
cat /etc/passwd
查看用户信息
查看系统文件或命令是否被修改
查找所有在过去 7 天内没有被修改过的文件,并列出它们的详细信息:
1 | find /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime +7 | xargs ls -alh |
- -type f:表示搜索的文件类型为普通文件;
- atime:访问时间(access time),指的是文件最后被读取的时间,可以使用 touch 命令更改为当前时间;
- ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以是 chmod 、chgrp 、mv 等等;
- mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以是 echo 重定向、vi 等等;
*查找所有在过去两小时内被修改或创建的文件:
1 | find / -type f -mmin -120 |
- **
-mmin -120
**:查找在过去 120 分钟(即 2 小时)内修改过的文件。-120
表示在过去 120 分钟内。
或者用 stat 命令单独查看某个文件的状态,确定最后修改时间:
1 | stat /usr/bin/ps |
查看所有别名设置,攻击者是否设置了别名:
1 | alias |
自动任务与启动项
crontab 命令用于查看自动任务文件:
- **
crontab -e
**:打开当前用户的crontab文件进行编辑。默认情况下,它会使用系统指定的文本编辑器(如vi
或nano
)来打开文件。编辑完成并保存后,新的定时任务将被立即加载到cron调度程序中。 - **
crontab -l
**:列出当前用户的crontab文件内容。显示所有当前设置的定时任务。
实际排查过程中,更推荐用 crontab -e ,可能发现隐藏的信息。
列出 user 用户的定时任务:
1 | crontab -u user -l |
查看定时任务文件:
1 | cat /etc/crontab |
查看所有定时任务配置文件的详细信息,主要是看修改日期:
1 | ll /etc/cron* |
查看所有启动项和服务:
1 | systemctl list-unit-files |
过滤出所有的开机启动的项目:
1 | systemctl list-unit-files |grep enabled |
查看 ssh key 文件
需要查看服务器每个用户的主工作目录下的 .ssh 目录下的 key 文件中有没有被添加未知的 key ,比如查看 root 的 ssh key 文件:
1 | cd /root/.ssh |
Windows 日志查看(事件查看器)
Windows 事件日志存储路径:C:\Windows\System32\winevt\Logs
systemroot 是 Windows 操作系统的一个环境变量,用于表示系统根目录所在的路径。 它的默认值通常是 C:\Windows 。
搜索栏搜索:事件查看器
运行窗口:eventvwr.msc
默认情况下,事件查看器日志文件使用 .evt 扩展名,并且位于 %SystemRoot%\System32\winevt\Logs 文件夹中。
重要的事件 ID :
- 4624 - 登录成功
- 4625 - 登录失败
- 4720 - 创建账户
重要的 LogonType(登录类型):
- 10 - 远程登录
查看日志可以搭配一些工具,如:Log Parse,wmic 等。
事件处置
隔离主机
断开网线即可,切不可关机。
阻断通信
说到防火墙,CentOS 有 FirewallD ,Ubuntu 有 ufw 。它们的用法和语法不尽相同,但有一点却是一致的,那就是他们底层都使用了 iptables 。
iptables -A INPUT -s 可疑地址 -j DROP
:这条命令会阻止所有来自 “可疑地址” 的入站数据包,也就是说,它阻止了你的系统接收来自这个 IP 地址的任何数据。iptables -A OUTPUT -d 可疑地址 -j DROP
:这条命令会阻止所有发往 “可疑地址” 的出站数据包,也就是说,它阻止了你的系统发送任何数据到这个 IP 地址。
清除木马进程及其守护进程
执行命令,每1秒刷新一次,显示整个命令路径:
1 | top -d 1 -c |
在结果中查找可疑进程,记录进程号。
立即结束进程并删除相关文件,pid 是进程号:
1 | kill -9 pid |
列出一个进程打开的文件:
1 | lsof -p [pid] |
如果该进程有父进程(守护进程),那么在 kill 命令的 pid 前加个 - ,停止所有相关进程:
1 | kill -9 -pid |
这个命令用于结束一个进程组中的所有进程。
系统命令被篡改,恢复文件
要么从其他系统拷贝文件,要么重装系统。
还可以安装 busybox 。
BusyBox
是一个集成了一百多个最常用 Linux 命令和工具(如 cat
、echo
、grep
、mount
、telnet
等)的精简工具箱,它只需要几 MB 的大小,很方便进行各种快速验证,被誉为 “ Linux 系统的瑞士军刀 ” 。
启动项清理
列出所有系统服务:
1 | chkconfig --list |
请注意,chkconfig
命令在一些现代的 Linux 发行版中可能已经被 systemctl
命令取代,列出所有系统服务:
1 | systemctl list-unit-files --type=service |
列出所有正在运行的系统服务:
1 | systemctl list-units --type=service --state=running |
查看服务状态:
1 | systemctl status 服务名 |
如果发现可疑服务,终止服务:
1 | systemctl stop 服务名 |
禁止服务开机自启动:
1 | systemctl disable 服务名 |
定时任务清理
找到被写入 shell 的定时任务,清理掉即可。
ssh key 清理
删除掉服务器下的 ~/.ssh/authorized_keys
文件中未授权的 key 即可。
可疑用户清理
uid 为 0 的除了 root 以外的用户都是可疑用户,使用 userdel
命令来删除一个用户:
1 | userdel 用户名 |
如果还想删除该用户的主目录和邮件池,可以添加 -r
参数:
1 | userdel -r 用户名 |
安全加固
针对爆破
删除多余用户
在 /etc/passwd 中查找除 root 以外的用户,用 userdel 命令删除。
口令安全策略
禁止空口令
以下命令可用于查找空口令用户:
1 | awk -F: '($2 == ""){print $1}' /etc/shadow |
设置口令复杂度
相关的配置文件在目录 /etc/pam.d/
下。
配置 PAM(Pluggable Authentication Modules)的 pam_cracklib.so
模块,设置密码复杂度:
1 | password requisite pam_cracklib.so retry=3 difok=2 minlen=8 lcredit=-1 dcredit=-1 |
retry=3
:这表示用户在输入不符合要求的密码时,可以重试的次数是 3 次。difok=2
:这表示新密码和旧密码之间至少需要有 2 个字符的不同。minlen=8
:这表示密码的最小长度是 8 个字符。lcredit=-1
:这表示密码中至少需要包含一个小写字母。dcredit=-1
:这表示密码中至少需要包含一个数字。
负号表示至少的意思。
此外,ucredit:最少大写字母;ocredit:最少的字符数量;
设置口令有效期
vi 编辑器的搜索功能:在 esc 状态下按下 “/“ 键,这时在状态栏(也就是屏幕左下脚)就出现了 “/“,然后输入要查找的关键字敲回车就可以了。
vi 编辑器显示行号:只须按 ESC 键退出编辑内容模式,输入“:” ,再输入“set number”或者“set nu”后按回车键,就可以显示行号了。
在 /etc/login.defs
文件中:
PASS_MAX_DAYS:密码最长有效期(默认值:99999,相当于关闭了密码的时效)
PASS_MIN_DAYS:密码最短有效期
PASS_MIN_LEN:密码最小强度(推荐最小密码为 8 位)
PASS_WARN_AGE:设定在口令失效前多少天 开始通知用户更改密码
针对 ssh 的登录失败锁定策略
配置文件 /etc/pam.d/sshd
使用 pam_tally2.so
模块设置登录失败锁定:
1 | auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_ unlock_time=1800 |
auth required pam_tally2.so
:使用pam_tally2.so
模块。pam_tally2.so
是一个 PAM 模块,用于记录和统计登录失败的次数。deny=3
:如果一个用户连续 3 次登录失败,那么该用户的账户将被锁定。unlock_time=300
:被锁定的账户将在 300 秒(即 5 分钟)后自动解锁。even_deny_root
:即使是 root 用户,也会被锁定。root_unlock_time=1800
:被锁定的 root 用户的账户将在 1800 秒(即 30 分钟)后自动解锁。
重置(reset)用户的登录失败计数,解锁用户:
1 | pam_tally2 -r -u root |
Fail2Ban 入侵检测系统
Fail2Ban 是一个入侵检测系统框架,它可以保护电脑服务器免受蛮力攻击。以 Python 程序设计语言编写,并能够在类 Unix 系统上运行,这些系统具有本地安装的数据包控制系统或防火墙的接口,例如 Iptables 或 TCP Wrapper 。
- Fail2ban 跟 DenyHosts 是类似的工具,可以阻挡有人恶意以字典暴力破解密码,通常应用于有开启 sshd、telnetd 跟 ftpd 的主机上。
- Fail2ban 的做法是将超过多次失败联机的 IP 列用 iptables(给 IPv4 使用) 或 ip6tables (给 IPv6 使用)禁止该 IP 之后的联机。
- 至于要多久之后可以再允许该 IP 再次联机可以在 Fail2ban 的配置文件案内设置。
针对权限突破
设置 IP 是否允许访问
黑名单
/etc/hosts.deny
:list of hosts that are not allowed to access the system.
此文件中可以配置不被允许访问的主机名单。
1 | sshd:all:deny #表示拒绝所有ip访问 |
白名单
/etc/hosts.allow
:list of hosts that are allowed to access the system.
此文件中可以配置白名单。
1 | sshd:192.168.142.*:allow #表示192.168.142.* ip段都能ssh访问 |
配置 iptables 防火墙策略,禁止访问:
1 | iptables -I INPUT -s $ip -j DROP |
防止端口扫描
- 将常见端口号修改为其他端口号,不易识别
- 关闭不必要的服务
- 使用 iptables 等防火墙防止端口扫描
- 布置陷阱。我们随机监听一些未使用的端口,假如有 IP 在短时间内前来连接好几个,那么很可能就是扫描者。于是可临时屏蔽该 IP 所有流量,保护那些还未被扫到的端口。
禁止 root 用户远程登录
配置 /etc/ssh/sshd_config 文件
这是 sshd 的配置文件,其中包含了 ssh 的配置规则。PermitRootLogin 设置 root 是否运行用 ssh 登录。
这里一定要设置成:PermitRootLogin no
防止提权
禁止 su 非法提权
配置文件:/etc/pam.d/su
,在此配置文件中配置只允许 wheel 组用户 su 到 root 。
不允许 nosu 组的用户 su:
1 | auth required pam_wheel.so deny group=nosu |
只允许 wheel 组的用户 su:
1 | auth required pam_wheel.so group=wheel |
防止 SUID 权限
SUID 是文件的一种特殊权限(除去读,写,执行的权限),可以使普通用户运行此文件时,被临时授予文件所有者的权限,以此权限来运行。
所以利用 suid 提权的核心就是运行 root 用户的拥有 suid 权限的文件,那么运行该文件的时候就得获得 root 用户的身份了。
设置 suid 权限:
1 | chmod u+s filename #设置 suid |
找出 root 用户所有设置了 suid 的文件:
1 | find / -user root -perm -4000 -print 2>/dev/null |
-perm -4000
:这表示查找的文件的权限设置中包含setuid
(suid)位。
防止 sudo 提权
配置文件:/etc/sudoers
visudo 命令是专门用来编辑 /etc/sudoers 文件的工具,保存退出时会自动检查语法错误。
如果给 farmsec1 用户添加 sudo 权限: farm1 ALL=(ALL) ALL
,
如果给 farmsec 用户组添加 sudo 权限: %farmsec ALL=(ALL) ALL
。
如果普通用户被添加了 sudo 权限,那么普通用户输入自己的密码就可以切换到 root 用户,而不需要知道 root 用户的密码。
针对攻击痕迹清理
auditd ( Linux 审核守护程序)
Red Hat/CentOS/Fedora: 通常已经默认安装,Debian 体系的 Linux 比如 Ubuntu、Kali 需要手动安装。
rsyslog 日志管理工具
补丁和更新
基于 redhat 的更新命令:
1 | yum check-update #列出可更新的软件清单 |
安全产品
安全厂商
产品分类
监控、告警
防火墙
WAF
堡垒机(运维审计系统)
IDS 入侵检测系统
IPS 入侵防御系统
态势感知
主机杀毒
安全管理平台(SCO)
抗 DDos
VPN
蜜罐 honeypot
终端安全管理系统 EDR
漏洞扫描/渗透测试 服务
异常隧道特征
DNS 隧道
奇怪的域名;
TXT 类型;
ICMP 隧道
ICMP 协议用于探测内网主机是否存活。
有内外连接的;
数据包很多的;
数据包内容很大的;
勒索病毒
什么是勒索病毒:
- 勒索病毒是指通过暴力破解、ms17010 以及漏洞攻击钓鱼等方式攻击到客户内网主机,并对重要服务器数据进行加密的病毒。
勒索病毒类型:
- Wannacry
- Wannacry2.0
勒索病毒预防:
- 首先避免高危服务,如 rdp、smb、ssh 对互联网开放
- 对内进行安全意识培训,避免普通员工点击恶意文件
- 定期对互联网业务系统进行漏洞扫描和渗透,及时发现高危漏洞,并及时修补
- 做好备份,有条件的可以实时异地备份
勒索病毒特征:
- 所有文件都会被加后缀
- 勒索者会留下联系方式
处理办法:
- 根据后缀和联系方式去互联网搜索,有概率搜到勒索病毒的类型及传播方式
- 找专门的谈判公司去跟勒索者谈判,以较低价格购买解密私钥
既然无法还原,勒索应急的意义是什么:
- 溯源,找到入口,修补漏洞,避免再次出现
勒索应急流程:
- 了解客户对公网映射的情况,开放了哪些端口和服务,是否有高危的端口和服务。
- 勒索病毒一般是通过 rdp 爆破进来的,一般针对 Windows 系统。
- 查看 Windows 事件查看器:4624,这个事件 ID 表示成功登陆的用户,用来筛选该系统的用户登陆成功情况。 4625,这个事件 ID 表示登陆失败的用户。
- 排查客户是否使用了弱密码。有弱密码,有爆破记录,在非业务时间非本人登录,大概率可以确定了。
常见的勒索病毒后缀有:
Mallox、.crypt、.encrypt、.locked、.locky、.wallet、.kraken、.zzz、.dharma 等 。
据 360 统计:2024 年 2 月,Phobos 家族占比 19.89% 居首位,第二的是占比 17.20% 的 Makop ,TargetOwner 家族以 15.05% 位居第三。
Zerologon 漏洞
利用该漏洞可将域管理员密码置空,利用的是 nrpc 协议,伴随出现的日志事件 id 为 4742 5805