事件响应可以定义为每当发生计算机或网络安全事件时所采取的行动过程。作为事件响应者,您应该始终了解系统中应该出现和不应该出现的内容。
排查思路
(1)首先监测用户账号安全,比如新增的账号、可疑账号,重点查看可以远程登录的账号以及高权限账号。
(2)利用linux的history指令查看历史linux指令,uptime指令查看登录多久、多少用户。
(3)检查异常端口和进程,netstat检查异常端口,ps检查异常进程,可以观看资源占用的进程id来判断是否有挖矿木马等嫌疑。
(4)检查linux的启动项和系统的定时任务crontab,crontab -l查看是否有异常的任务编写进来。
(5)检查linux的日志信息/var/log/一些系统日志信息、安全日志等。
(6)自动化查杀软件,在线查杀工具,查杀脚本来查杀。
linux应急响应可按4个环节进行:
通过系统运行状态、安全设备警告、监控系统发现主机上具有异常行为:异常流量、异常端口、CPU/内存占用率异常等等
针对不同的现象评估可能出现的问题:
连接到系统服务器后开始对现象进行调查,查看CPU、内存、进程、系统挂载等
#top命令降序查看cpu占用率
top
CPU占用率达到70%以上,且名字比较可疑的进程,可能就是病毒
枚举进程
ps -aux
病毒多携带可疑的命令行,当发现命令行中带有url或奇怪字符时,就要注意是否它是否是个病毒下载程序
定位某一进程
lsof -p <PID>
查看安全网关或监控系统
查看网关或监控系统中与目标ip通信的进程,并通过命令行列举出此进程
##列举网络Socket连接的进程
while true;do netstat -antp | grep <ip>; done
有时后检测到的是个域名,其对应的ip在不断变化,用上述方法过滤ip并不适用,可疑在hosts文件中将域名绑定为一个随机的ip,对其进行监控
这样使用如上的命令进行过滤就可以得到恶意进程了
得到恶意进程和其PID后,使用如下命令寻找恶意进程储存的位置
ls -al /proc/<pid>/exe
检查是否存在任何异常端口被开启
netstat -nap //查询开启端口及进程
##查询开启端口,包含UDP和TCP
##参数-t表示TCP,-u表示UDP
netstat -nutpl
##查看root的历史指令
history
##查看各用户的历史指令
cat /home/user/.bash_history
通过恶意进程、端口、网络等找到恶意文件路径最好,但有时候我们也需要仔细排查其他目录是否有残余的病毒
首先查看/usr/bin/ls , /usr/bin/lsof ,/usr/bin/stat 几个文件没有被修改
stat /usr/bin/ls
stat /usr/bin/lsof
stat /usr/bin/stat
排查可读写执行目录
ls -al /tmp/; ls -al /var/tmp; ls -al /dev/shm
排查$PATH环境变量下的目录文件
echo $PATH
ls -al /usr/local/sbin
ls -al /usr/local/bin
...
等等
递归查看所有文件
ls -aR
使用stat查看任何文件的更改、创建等时间
通过lsof命令查看文件和进程调用
- lsof 列出所有进程调用
- lsof abc.txt 显示开启文件abc.txt的进程
- lsof -c abc 显示abc进程现在打开的文件
- lsof -p 1234 列出进程号为1234的进程所打开的文件
- lsof -g gid 显示归属gid的进程情况
- lsof +d /usr/local/ 显示目录下被进程开启的文件
- lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
- lsof -d 4 显示使用fd为4的进程
- lsof -i :port 检查哪个进程使用这个端口
- lsof -i 用以显示符合条件的进程情况
通过find查找文件大小、近期新增、修改的文件
通过diff命令对比入侵环境和纯净环境
首先要把纯净环境拷贝到PC-x中
diff -r <dir1> <dir2>
##查看恶意程序对应路径
ls -al /proc/<pid>/exe
##查看运行进程的名命令及参数
cat /proc/<pid>/cmdline
##查看恶意文件类型
file /home/light/abc.txt
##查看 ELF文件里带的字符串
strings /tmp/.elf
若恶意程序被删除,可以通过内存转储方式从内存中导出恶意程序
从内存拷贝恢复被删除文件
cp /proc/[pid]/exe /tmp/malware.dump
导出进程内存
cat /proc/[pid]/maps 7ff48bb5d000-7ff48bb5e000
gdb --pid [pid]
dump memory /tmp/malware.dump 0x7ff48bb5d000 0x7ff48bb5e000
chkrootkit
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.53
make sense
./chkrootkit
rkhunter
wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
或者下面这个
wget https://fossies.org/linux/privat/rkhunter-1.4.6.tar.gz
tar -zxvf rkhunter-1.4.6.tar.gz
cd rkhunter-1.4.6
./installer.sh --install
rkhunter -c
通过上述调查,查找到了恶意进程
ls -al /proc/<pid>/exe
并定位到了恶意文件存在位置,可以把恶意文件上传到查毒网站进行检查——virustotal。
结束恶意进程
##查找到恶意进程
ps -elf | grep <pid>
##-9强制终止进程
kill -9 <pid>
检查Linux账户
排查系统账号的安全,看是否存在新增可疑、临时、高权限账号。
##查看所有账号
cat /etc/passwd
##查看特权用户(uid为0)
grep :0: /etc/passwd
##查看账号密码相关信息
cat /etc/shadow
##查看用户登录时间
uptime
##查询utmp文件并报告当前登录的每一个用户
who
##查询utmp文件并显示当前系统中每个用户和它队形的进程
w
##列出所有用户最近的登录报告
lastlog
##查看远程SSH和telnet登录
tail /var/log/auth.log
tail /var/log/secure
##查看sudo用户列表
cat /etc/sudoers
##多可以账号进行禁用或删除
usermod -L user //禁用user账号
userdel user //删除user账号
userdel -r user //删除user账号,并将/home目录下的user目录一并删除
检查可疑定时任务
##列出当前用户cron服务详细内容
crontab -l //文件保存在/var/spool/cron/user
##查看以下目录中是否存在恶意脚本
cat /etc/crontab
* /etc/crontab
* /etc/cron.d/*
* /etc/cron.daily/*
* /etc/cron.hourly/*
* /etc/cron.monthly/*
* /etc/cron.weekly/
* /etc/anacrontab
* /var/spool/cron/*
* /var/spool/anacron/*
检查可疑服务
查看开机自启动
遍历/etc/目录下 init 开头、rc 开头的目录及文件
/etc/init.d
查询开机自启动的服务
service --status-all
服务自启动修改
##第一种修改方法
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level 2345 httpd on 开启自启动
chkconfig httpd on (默认level是2345)
##第二种修改方法
修改/etc/re.d/rc.local 文件
加入 /etc/init.d/httpd start
##第三种修改方法
使用 ntsysv 命令管理自启动
检查系统日志
日志存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
排查ssh
查看/root/.ssh/known_hosts文件中的ssh公钥,查看本机通过ssh连接那一部分主机
cat /root/.ssh/known_hosts
Web服务补丁
Tomcat弱口令攻击
Weblogic WLS组件漏洞
Jboss反序列化漏洞
structs2系列RCE漏洞
thinkphp5.XRCE漏洞
Redis未授权访问漏洞
ConfluenceRCE漏洞(CVE_2019_3396)
DrupalRCE漏洞(CVE-2018-7600)
ThinkPHPRCE漏洞(CVE-2019-9082)
入侵原因
弱密码/默认密码
通过netstat查看对外开放的服务,确认服务(mysql、redis,zookeeper,tomcat等是否具有配置认证,是否使用的默认密码或弱密码
查看这些服务日志信息,是否存在入侵记录
查看日志
系统日志和应用程序日志
* /var/log/cron 记录了系统定时任务相关的日志
* /var/log/cups 记录打印信息的日志
* /var/log/dmesg 记录了系统在开机时内核自检的信息
* /var/log/mailog 记录邮件信息
* /var/log/message 记录系统重要信息的日志
* /var/log/btmp 记录错误登录日志。 要使用lastb命令查看
* /var/log/lastlog 记录系统中所有用户最后一次登录时间的日志。 要使用lastlog命令查看
* /var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。 要使用last命令查看
* /var/log/utmp 记录当前已经登录的用户信息。要使用w,who,users命令查看
* /var/log/secure 记录验证和授权方面的信息,比如SSH登录,su切换用户,sudo授权
其他web中间件日志,如
apache、mysql、ngnix
查看ssh登录记录
cat /var/log/secure | grep 'Accepted'
恶意进程关联文件
大多数情况恶意进程的父进程都是1,而有些情况下恶意进程的父进程可能不是1,比如父进程是httpd,这种情况下,就可以大胆猜测攻击者是通过利用父进程的漏洞达成攻击。
通过命令ps -ef 查看进程的父进程pid也就是ppid
通过 ps auxef 查看恶意进程启动的用户,如果发现比如是mysql用户启动,那么就可以推断是通过mysql服务入侵。
(1)禁用或者删除无用的账号,检查特殊账户(可远程登录、用户权限高的账号),必要时禁止远程登录用户登录,只能本地登录,设置多次登录失败锁定账户。
(2)检查重要的目录和文件的权限,chmod增加权限,防止篡改等。(3)关闭不必要的服务,跟企业无关的服务可以暂时关闭。
(4)关闭不必要的协议,如ftp、ssh、telnet等,可能存在协议漏洞。
(5)关闭不必要的端口,有一些端口可能存在端口漏洞。 (6)时不时检查安全日志,观察日志信息。
(7)可以使用安全厂商的设备来实时检查,或者使用系统杀毒软件查杀。
(8)修改弱密码或默认密码为强密码
(9)及时升级组件或中间件,添加系统补丁
文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout
文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件
文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"
文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules
文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure
文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板
文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server
文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d
文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c
文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...
文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy
文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos