版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhalang8324/article/details/80095987
应急响应笔记
基础知识
- Linux操作系统基础
- 一些常见的命令必须熟悉:
- ls怎么按照时间排序列出当前目录文件?
- ls实现列文件按时间排序
- 1) ls -lt 时间最近的在前面
- 2) ls -ltr 时间从前到后
- stat命令是干嘛的?
- 显示文件详细信息,访问时间、内容修改时间、状态修改时间
- lsof的作用是什么?lsof每一列分别代表什么?
- 查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件
-
lsof输出各列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等,常见的文件类型
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
- strace命令的作用是什么?
- 在命令执行的过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值
-
- 怎么样通过cat命令组合awk和sed和cut等命令进行快速的日志分析?
-
cut与awk提取列
cut 选项 文件名
-f:指定提取的列
-d:指定分隔符
sed主要是用来将数据进行选取,替换,删除,新增的命令。
sed [选项] '[动作]' 文件名
- 通过Linux下的哪个文件可以得到当前主机上所有的用户信息?
-
cat /etc/passwd;
cat /etc/group
- .bash_history这个文件的作用是什么?crontab在Linux下是干嘛的?
- history,历史bash命令
- 定时任务
- xargs命令的作用是什么?find /var/www/html/ -type f -name "*.jsp" | xargs grep "exec("这条命令的作用是什么?/var/log/cron这个文件是记录什么?
- xargs :给命令传递参数,例如
xargs将find 命令的输出传递给ls -l
# find /etc -name "*.conf" | xargs ls –l
命令作用为:找到/var/www/html目录下类型为普通文件,名字后缀为jsp的文件,然后通过xargs传递给grep去匹配jsp中为exec的文本内容。排查jsp后门用。 - cron(定制任务日志)日志
- /var/log/btmp?
- 文件是记录错误登录的日志/ssh登录
- last命令的作用是什么?
- 显示用户最近登录信息
- /var/log/secure?
- 包含验证和授权方面信息、例如,sshd会将所有信息记录(其中包括失败登录)在这里
- curl ip.cn -H "X-Forwarded-For: 117.34.5.6"这句命令作用是?
- 访问ip.cn为其加上X-Forwarded-For: 117.34.5.6的header头
- ps -ef、lsof -i:8080、netstat -lanp?
-
ps [选项]
下面对命令选项进行说明:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。u 以用户为主的格式来显示程序状况。
x 显示所有程序,不以终端机来区分。
ps -ef 显示出的结果:1.UID 用户ID
2.PID 进程ID
3.PPID 父进程ID
4.C CPU占用率
5.STIME 开始时间
6.TTY 开始此进程的TTY----终端设备
7.TIME 此进程运行的总时间
8.CMD 命令名 - lsof -i :port_number
example:
lsof -i :22 查看22端口运行的进程 ****
lsof -i :22 -t 查看22端口运行的进程的pid ***
kill -9 `lsof -i :22 -t` 查出使用22端口的进程pid,并杀掉该进程
lsof -i -sTCP:LISTEN 查看正在被监听的端口(或者lsof -i |grep LISTEN)
4.列出在某一个端口段间的所有进程
lsof -i :500-5000 (查看打开端口在500到5000间的所有进程
5.列出某个进程id打开的文件
lsof -p 5001 查看进程id为5001的进程所打开的文件 ****
6.查看某个目录下被打开的全部文件(ps:会搜索目录下所有目录 +d参数只会搜素目录第一层
lsof +D /usr/ison 查看该目录下全部被打开的文件 ***
7.根据进程名查看被打开的文件
lsof -c mysql 查看mysql打开的文件名 *** - netstat命令用于显示网络状态
- 怎么样通过个grep命令找到web访问日志中的awvs和sqlmap的扫描记录?
- find /var/log/apapche2/ -type f -name "access.log" | xargs grep "sqlmap"
- sz和rz命令是干嘛的?scp呢?
- sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)
scp:Linux之间复制文件和目录 - 怎么用tar命令打包文件夹?strings?
- tar cvf test.tar test.txt 压缩文件
- tar -xzvf archive.tar.gz 解压文件
- ……
- windows操作系统基础
- 熟悉基本的cmd命令(参考:https://ss64.com/nt/)
- windows eventID在线查询:http://www.eventid.net/
- 熟悉常见的针对windows操作系统的攻击方式
- 熟悉常见组件以及端口的被攻击的方式(例如典型的:redis部署在公网或者阿里云内网,进redis的配置文件查看,如果requirepass没有启用,那么攻击者可以通过redis向crontab或者.ssh写入恶意语句入侵服务器;例如部署了tomcat那么就需要看看manager目录是否删除?没有删除可以通过manager部署一个恶意的war入侵服务器等等)
- 能够使用IDA Pro 对恶意二进制文件进行简单的静态分析,使用网上公开的在线恶意文件分析平台对恶意二进制文件进行简单的动态分析,
应急大概流程
- 询问(问:1.当前情况。主要是问当前发现了哪些异常;2.服务器组件部署情况;3.是否处于内网环境?是否还有其他关联服务器?4.如果当前服务器上部署了web应用还需要问这个项目是否经过安全测试?)
- 事件处理
- 需要依据对项目组询问的结果进行排查,心里大概列出攻击者可能通过哪几条路进来并且在心里进行排序。这块的依据是基础知识那块的第二点,能不能快速的找到问题取决于你是否了解常见的攻击套路。
- 初步对事件进行判断,是否需要关停业务或者是否需要隔离被攻击主机,是否需要对被攻击主机进行断网等等,防止损失/危害进一步扩大。
- 建讨论组。拉相关人员进组方便沟通交流(一般包括:项目组运维、开发、领导、我方的事件处理人员、领导)
- 依据上一步的排序结果进行对应日志调取,需要注意的是:日志不要在线上服务器进行分析,将线上日志打包下载回本地。不要在线上服务器进行任何多余的操作,操作的时候要小心小心再小心。可以让项目组的韵味取日志之后再发给你。对日志进行分析(考虑到我们这边项目的特征一般采用Linux下shell分析的方式,对于windows自带的事件日志一般采用splunk或者windows自带的日志分析工具或者log parser)比如通过询问了解到这台被黑的服务器用到了tomcat并且manager也存在弱口令,那么你首先需要调取的就是tomcat的日志,因为tomcat manager的入侵是需要上传war包,所以你的语句应该是:cat log.log | grep -i ".war"
- 如果上一步骤中你找到了异常的war包(看文件名看上传时间)那么需要在服务器中找到这个war包下载到本地进行分析(主要分析是否是恶意的war包,如果是他的主要作用是什么)依据war包第一次上传的时间为准通过日志整理出攻击者的攻击时间线,依据时间线进行整体的入侵行为分析。分析攻击者在这个时间段内做了什么。
- 如果被黑服务器处在内网还需要对内网其他服务器进行分析,是否存在被黑的情况,重点关注和被黑服务器共享同一密码的服务器。
- 如果服务器中存在恶意的二进制文件,需要对二进制文件进行分析。使用IDA Pro对恶意文件进行静态分析,使用在线文件分析平台(金山火眼、文件B超、virustotal等等)对恶意文件进行动态分析。结合两者的分析结果判定恶意文件的行为,例如是否会对服务器系统文件进行替换?是否感染了系统其他关键文件?是否将自身写入开机启动项?同时可以将恶意文件的md5值放到网上搜索看看有没有人已经对该恶意文件进行过分析。
- 确定此次事件的影响大小。
- 报告
如何在日志中快速对应攻击者信息:
攻击者IP/攻击时间(甲方交流,文件修改,文件新建)/对木马文件的访问