本文已参与「新人创作礼」活动,一起开启掘金创作之路
🅰️应急响应🛡️
⬆️宏观题
1.基本思路流程
- 收集信息:收集客户信息和中毒主机信息,包括样本
- 判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS 等等
- 抑制范围:隔离使受害⾯不继续扩⼤
- 深入分析:日志分析、进程分析、启动项分析、样本分析方便后期溯源
- 清理处置:杀掉进程,删除文件,打补丁,删除异常系统服务,清除后门账号防止事件扩大,处理完毕后恢复生产
- 产出报告:整理并输出完整的安全事件报告
2.Windows入侵排查思路
-
检查系统账号安全
-
查看服务器是否有弱口令,远程管理端口是否对公网开放(使用
netstat -ano
命令、或者问服务器管理员) -
lusrmgr.msc
命令查看服务器是否存在可疑账号、新增账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉 -
用 D 盾或者注册表中查看服务器是否存在隐藏账号、克隆账号
-
结合日志,查看管理员登录时间、用户名是否存在异常
检查方法:Win+R 打开运行,输入“eventvwr.msc”,回车运行,打开“事件查看器”,导出 Windows 日志--安全,利用 Log Parser 进行分析
-
-
检查异常端口、进程
netstat -ano
检查端口连接情况,是否有远程连接、可疑连接- 任务管理器-进程
-
检查启动项、计划任务、服务
-
检查系统相关信息
查看系统版本以及补丁信息
查找可疑目录及文件
-
日志分析
3.Linux入侵排查思路
-
账号安全
who 查看当前登录用户(tty本地登陆 pts远程登录) w 查看系统信息,想知道某一时刻用户的行为 uptime 查看登陆多久、多少用户,负载
1、用户信息文件/etc/passwd root:x:0:0:root:/root:/bin/bash account:password:UID:GID:GECOS:directory:shell 用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell 注意:无密码只允许本机登陆,远程不允许登陆 2、影子文件/etc/shadow root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7::: 用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
/etc/passwd
存储一般的用户信息,任何人都可以访问;/etc/shadow
存储用户的密码信息,只有 root 用户可以访问 -
历史命令
通过 .bash_history 查看帐号执行过的系统命令 1、root的历史命令 histroy 2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号的历史命令 历史操作命令的清除:history -c 但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录
-
检查异常端口
netstat -antlp|more 查看下pid所对应的进程文件路径, 运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
-
检查异常进程
ps aux | grep pid
-
检查开机启动项
开机启动配置文件
/etc/rc.local /etc/rc.d/rc[0~6].d
-
检查定时任务
crontab -l 列出某个用户cron服务的详细内容 Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务) crontab -e 使用编辑器编辑当前的crontab文件 如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件 2、利用anacron实现异步定时任务调度
重点关注
/var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/*
-
检查服务
chkconfig --list 命令,可以查看系统运行的服务
-
检查异常文件
-
检查系统日志
Linux的登录日志查看文件
- 日志默认存放位置:/var/log/
- 查看可登录的账户 cat/etc/passwd|grep '/bin/bash'
- 查看所有用户最后的登录信息 lastlog
- 查看用户最近登录信息 last 其中,/var/log/wtmp 存储登录成功的信息、btmp 存储登录失败的信息、utmp 存储当前正在登录的信息
- 查看当前用户登录系统情况 who
Linux常用排查命令
这个问题就是 linux 入侵排查排查的一部分
cloud.tencent.com/developer/a…
系统信息
- 查看当前系统状态 top
- 操作系统信息 uname -a
- 查看当前系统进程信息 ps
- 查看历史命令 history
- 列出本机所有的连接和监听的端口 netstat
- 查看谁在使用某个端口 lsof
用户登录
-
查看当前用户登录系统情况 who
-
分析超级权限账户 awk-F: '{if(1}'/etc/passwd
-
查看可登录的账户 cat/etc/passwd|grep '/bin/bash'
-
查看用户错误的登录信息 lastb
-
查看所有用户最后的登录信息 lastlog
-
查看用户最近登录信息 last
/var/log/ 其中,/var/log/wtmp 存储登录成功的信息、btmp存储登录失败的信息、utmp存储当前正在登录的信息
-
查看空口令账户 awk-F: 'length(2)==0 {print 1}'/etc/shadow
linux查看文件命令
more: 一页一页的显示档案内容
less: 与 more 类似 head:查看头几行
tac: 从最后一行开始显示,可以看出 tac 是cat 的反向显示
tail: 查看尾几行
nl: 显示内容,顺便输出行号
od: 以二进制的方式读取档案内容
vi: 一种编辑器,这个也可以查看
vim: 一种编辑器,这个也可以查看
sort: 文件排序并输出也可以查看内容
uniq: 可以查看 file -f:报错出具体内容 grep
strings: 在对象文件或二进制文件中查找可打印的字符串, 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令: grep test *file strings
paste 把每个文件以列对列的方式,一列列地加以合并
grep grep { flag.php打印有”{“的一行
sed 一种编辑器,可以用sed -f flag.php读取flag
Linux基线规范
每个公司有每个公司的基线规范体系,但是答题分为下列五个方面
账号管理和授权
- 检查特殊账号,是否存在空密码的账户和 root 权限账户
- 禁用或删除无用账号
- 添加口令策略:
/etc/login.defs
修改配置文件,设置过期时间、连续认证失败次数 - 禁止 root 远程登录,限制root用户直接登录。
- 检查 su 权限。
vi /etc/pam.d/su
添加auth required pam_wheel.so group=test
服务
- 关闭不必要的服务
- SSH 服务安全
- 不允许 root 账号直接登录系统,
PermitRootLogin=no
- 修改 SSH 使用的协议版本为 2
- 修改允许密码错误次数(默认 6 次),
MaxAuthTries=3
- 不允许 root 账号直接登录系统,
文件系统
- 设置 umask 值
vi /etc/profile
添加行umask 027
- 设置登录超时
vi /etc/profile
修改配置文件,将以TMOUT=
开头的行注释,设置为TMOUT=180
日志
-
启用 syslogd 日志,配置日志目录权限,或者设置日志服务器
-
记录所有用户的登录和操作日志,通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查
IP 协议安全要求
- 远程登录取消 telnet 采用 ssh
- 设置 /etc/hosts.allow 和 deny
- 禁止 ICMP 重定向
- 禁止源路由转发
- 防 ssh 破解,iptables (对已经建立的所有链接都放行,限制每分钟连接 ssh 的次数)+ denyhost (添加 ip 拒绝访问)
Linux 安全基线检查
Linux:cloud.tencent.com/developer/a…
Windows 安全基线检查
Windows:cloud.tencent.com/developer/a…
主要包括五个方面:身份鉴别、访问控制、安全审计、资源控制、剩余信息保护
-
身份鉴别
更改缺省账户
检查Guest用户是否禁用
密码复杂性要求
密码长度最小不能小于8位
-
访问控制
共享账户检查
远程关机授权
本地关机
授权帐户登陆
-
安全审计
用户登录日志记录
系统日志完备性检查
登录超时管理
-
资源控制
登录超时管理
远程登录超时配置
-
剩余信息保护
不显示上次的用户名
关机前清除虚拟内存页面
不启用可还原的加密来存储密码
中间件基线规范(APACHE)
配置
- 账号
- 授权
- 日志
- session 过期时间(防ddos)
- 绑定监听地址
禁止
- 目录权限
- 访问外部文件
- CGI
- 非法HTTP方法(PUT DELETE)
隐藏
- 服务版本号
- 重定向错误页面
删除
- 配置文件
- 默认安装的无用文件
中间件常见漏洞
(一) IIS 1、PUT漏洞
2、短文件名猜解
3、远程代码执行
4、解析漏洞
(二) Apache 1、解析漏洞
2、目录遍历
(三) Nginx 1、文件解析
2、目录遍历
3、CRLF注入
4、目录穿越
(四)Tomcat 1、远程代码执行
2、war后门文件部署
(五)jBoss 1、反序列化漏洞
2、war后门文件部署
(六)WebLogic 1、反序列化漏洞
2、SSRF
3、任意文件上传
4、war后门文件部署
(七)其它中间件相关漏洞 1、FastCGI未授权访问、任意命令执行
2、PHPCGI远程代码执行
解析漏洞
- apache
- 多后缀解析漏洞 php.aaa.a
- 罕见后缀 php3 php5 phtml
- 换行符解析漏洞 \x0A
- Nginx
- CGI 解析漏洞 1.jpg/1.php
- 00 截断
- IIS
- IIS5.0 和 6.0 解析漏洞 xx.asp/xx.jpg
- IIS 7.0/7.5 CGI解析漏洞
防御
- 判断文件类型
- 文件上传的目录设置为不可执行
- 使用随机数改写文件名和文件路径
- 使用单独的文件服务器存储上传的文件