Linux应急响应与分析

2018-11-29 9,160

硬盘克隆

dd if=/dev/zero of=/dev/sda bs=4k    擦除硬盘

dd if=/dev/sda of=/root/image   克隆硬盘到映像

dd if=/root/image of=/dev/hdb   将备份文件到指定硬盘    


恶意检测软件

chkrootkit 检测系统后门、rootkit、文件完整性

chkrootkit -n| grep 'INFECTED'

rkhunter   与chkrootkit类似

rkhunter --checkall

图片139.png


webshell查杀:

测试样本库:https://github.com/tennc/webshell

将web目录打包到windows下用D盾查杀     查杀数:1162

图片2.png


loki工具(跨平台)https://github.com/Neo23x0/Loki/   加载yara规则扫描webshell文件与恶意软件  查杀数:973

loki -p 扫描目录 -s 扫描大小 -l 日志文件

图片320-1024x319.png

河马查杀(跨平台)   查杀数:831

hm scan /opt/webshell/

图片4.png

深信服webshell查杀(跨平台)  查杀数:1082

图片5.png

图片6.png

最终结果D盾》深信服webshell查杀》Loki》河马

病毒检测:

cleamav linux开源病毒查杀工具

系统检查工具:

FreeBSD

pkg audit  freebsd下使用pkg命令检测系统存在问题的软件

图片711.png

Debian  

debsecan | grep "high urgency" | grep "remotely exploitable"

图片810.png

Lynis  Unix/Linux开源安全审计工具

检测系统各个设置与软件 lynis audit system

图片910.png

图片1010.png

aide 高级入侵检测系统  

以下是在freebsd系统中测试的,但是大体过程差不多大体就是先设置配置文件,初始数据库,然后在进行检测。

cp /usr/ports/security/aide/files/aide.conf.freebsd /etc/aide.conf

touch /var/db/aide/databases/aide.db

chmod 755 /var/db/aide/databases/aide.db

aide --config=/etc/aide.conf --init   初始化aide数据


图片1113.png

cp  /var/db/aide/databases/aide.db.new 

 /var/db/aide/databases/aide.db

aide --config=/etc/aide.conf --check    对比上次初始化数据结果是否有过改动


图片1211.png


系统信息查看

cat /etc/issue  #Debian/Centos 查看系统版本

freebsd-version   #BSD下查看系统版本

cat /proc/version | grep Linux  查看系统内核

cat /etc/lsb-release  查看    #debian系发行版本

cat /etc/redhat-release   查看    #rhel系发行版本

cat /proc/modules  查看系统内核模块

cat   /proc/uptime    查看系统运行时间

tune2fs -l /dev/sda1|grep created  查看系统安装时间

图片1310.png

cat /etc/fstab  查看自动挂载文件

echo  $?  //查看上一条命令是否执行成功  结果返回0为真

service  --status-all | grep "is running"   #Centos下查看正在运行的服务

图片14.png

service --status-all | grep + #Debian系列下查看正在运行的服务

图片157.png

信息收集脚本:

http://www.securitysift.com/download/linuxprivchecker.py 

只需在终端键入python linuxprivchecke.py就可以使用该脚本,该脚本将枚举文件和目录的权限和内容。这个脚本和LinEnum工作原理大致相同并且在相关系统网络和用户获得的信息更详细。

watch  监控命令执行的结果  实时变动

watch tail -n /var/log/1.log 实时监控日志

watch netstat -antop 实时监控网络连接


用户查看:

grep :0 /etc/passwd:查看是否有特权用户(root权限用户)

ls -l /etc/passwd:查看passwd最后修改时间

cat /etc/passwd|ag -v 'nologin$|false$'  查看可以登陆的用户

cat /etc/passwd | awk -F: 'length($2)==0 {print $1}':查看是否存在空口令用户

cat /etc/sudoers  查看sudo配置文件

用户名    登陆来源    可切换的身份   可执行的命令  加了NOPASSWD:  后切换root不需要密码

图片16.png


进程查看:

ps aux/ps -ef   //查看进程详细信息

lsof -p pid  //查看进程打开的端口和文件

图片185-1024x635.png


用ls 查看/proc目录下的进程id

图片194.png

lsof  -u root -c mysql  查看root用户mysql进程打开的情况(包括文件还有网络连接)

图片20.png

lsof -i:8443   查看与某端口相关的程序与网络连接

图片21.png

top 查看系统进程

按1后 在输入shitf+p  以cpu占用排序,可以快速查看不正常的程序,例如挖矿

按shift+m 以内存占用排序


文件管理:

ls -alh      //查看当前目录下的详细信息  h代表以kb ,mb为单位

yes|cp a /test/a  强制复制  没有提示

df -h    查看系统分区大小

du -h   递归统计当前目录下的文件大小

find / -uid 0 -print:查找特权用户文件

find / -size +10000k -print:查找大于10000k的文件

10M/10G

find / -name "..." -prin:查找用户名为...的文件

find / -name core -exec ls -l {} \;:查找core文件,并列出详细信息

find /etc /bin /sbin /dev /root/  /home /tmp -atime/mtime/ctime  -1   分别代表了文件读取日期/文件更改日期/文件权限更改日期  后面数字代表n * 24  1就是24小时

+7 7天外 -7 天内

find ./ -mtime 0 -name "*.jsp"  查找最近修改过的脚本文件

find . -type f -mtime -60 -delete       查找结果并将其删除

md5sum -b filename:查看文件的md5值

rpm -qf /bin/ls:检查文件的完整性(还有其它/bin目录下的文件)  #Centos

stat  查看文件的atime/mtime/ctime 分别对应着访问时间/修改时间/状态时间

!!不要直接用vim查看文件内容,这样会更改文件的mtime值

图片22.png

批量重命名

rename 's/ /_/g' *  

批量删除括号里面没有的内容

rm !(*.foo|*.bar|*.baz)   

批量压缩(从文本列表中压缩):

find /var/log -mtime -3 > list.txt

tar -czvf list.tar.gz -T list.txt

rar格式的解压缩实例:

unrar e filesname.rar

7z文件解压缩实例

yum install p7zip/apt-get install p7zip

7z x filename.7z

zip文件解压缩

gzip -v   file   压缩   gzip -d file  解压

unzip   文件名

xz   压缩与解压

apt-get install xz-utils

压缩时间长   空间更小    linux自带

xz -z  要压缩的文件

xz -d  要解压的文件

xz -k -d 要解压的文件  保留压缩文件

tar.xz   压缩与解压

tar cvf xss.tar xss/

xz -z xxx.tar

xz -d xss.tar.xz

tar xvf xss.tar

tar.bz2 解压

tar -jxvf xxx.tar.bz2

zcat  1.tar.gz  查看压缩文件中的文本

用grep二进制搜索的方式查看压缩包里面的文本   -a参数二进制模式匹配

图片23.png

zgrep   压缩文件中搜索文本

图片24.png


文件上传到系统中:

使用wget或者curl下载

先别的电脑上开启web端口python -m SimpleHTTPServer

在使用wget http://1.1.1.1/1.exe  或  curl  http://1.1.1.1/1.exe  -o 1.exe

linux rz与sz命令

apt-get install lrzsz,输入rz就可以选择文件上传,需要ssh客户端软件支持不然会报错。

图片25.png

scp&&sftp     last与w不会存在登陆记录,但是auth.log里面会有pam认证信息

scp -P 2222 /root/1.txt root@192.168.1.1:/root/1.txt   通过scp上传到对方电脑上

scp  -P 2222 root@192.168.1.1:/root/1.ico /root/1.txt 对方电脑下载到本地

Perl

#!/usr/bin/perl

use LWP::Simple;

getstore("http://domain/file", "file");

perl test.pl

通过nsf挂载进行下载

sudo mount -t nfs 1.1.1.1:/opt/test /root/tools

通过base64编码上传

base64 /bin/nc > nc.txt

base64 -d -i nc.txt > ./nc

通过xxd或者od上传

xxd -p test.pcap>1.txt

xxd -r -p 1.txt test.pcap


检查网络:

ip link | grep PROMISC:检查混杂模式,正常网卡不应该存在promisc,如果存在可能有sniffer

sockstat -46   #FreeBSD下查看网络监听

图片26.png

lsof -i      查看网络连接与端口监听

图片273-1024x102.png

netstat -antup:查看网络连接

图片283.png

netstat --tulpen  监听端口(tcp与udp的监听)

图片293-1024x278.png

arp -a:查看arp记录是否正常

/sbin/route -nee   查看路由表

查看外网ip

图片30.png

计划任务:

crontab -u root -l:查看root用户的计划任务

查看用户cron文件 /var/spool/cron/crontabs

ls -l /etc/cron.*:查看系统cron文件, /etc/cron.d /etc/cron.daily  /etc/cron.hourly  /etc/cron.monthly  /etc/cron.weekly这几个文件的内容在crontab -l 看不到

 

用户信息查看

如果安装了zsh也可以看看~/.zshrc

cat ~/.bash_history

cat ~/.nano_history

cat ~/.mysql_history

cat ~/.php_history

cat ~/.bashrc

cat ~/.profile

cat ~/.ssh/authorized_keys

cat /etc/profile

cat ~/.bash_profile

cat ~/.bashrc

cat ~/.bash_logout

env

set

 

软件相关

dpkg -l      #Debian系查看软件包列表  iU 表示软件包未安装成功/ii 表示安装成功/rc 表示软件包已经被卸载,但配置文件仍在

图片3110.png

rpm -qa   #RHEL系 查看软件包

whereis vim    //查看vim相关的路径,定位软件目录。

图片324.png

登陆信息查看:

w/who    查看当前系统登录情况

last:显示系统的登录以及重启情况

Last -x    针对关机重启

Lastb 登陆错误信息,可以统计爆破信息。

Lastlog 查看所有用户的上一次登陆信息

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'          //检测ssh是否遇到爆破

netstat -anotp|grep ESTAB*|awk  '{print $5}'|awk -F ':' '{print $1}'|sort|uniq

ag -a accepted /var/log/auth.*|ag -o '\d+\.\d+\.\d+\.\d+'|sort|uniq   根据auto.log查看ssh登陆ip


简单分析

file  1.rar 通过file命令判断文件类型

strings  bin|less 查看二进制文件中的字符串

strings -n 8   提取字符串

strace  bin  记录一个命令执行时系统调用,trace限定条件为只查看网络、进程、文件动作

strace -T -f -tt -e trace=process,network,file curl ipip.net


图片334-1024x655.png

strace -T -f -tt -e trace=process,network,file -p 23825  根据PID从当前进程读取

分析openssh后门

https://github.com/jivoi/openssh-backdoor-kit/

作用:后门密码,记录所有ssh连接密码(入站与出站),使用后门密码连接不会记录last与lastlog

 strace -T -f -tt -e trace=process,network,file -p 20123 -o sshd.out

然后在另一个窗口中登陆ssh,记录ssh登陆时文件调用。

图片344.png

strings sshd.out | grep open|grep -v '/dev'|grep 'WR',可以看到ssh登录时除了在utmp/wtmp/lastlog写入还在tmp下一个文件写入(O_WRONLY 只写打开,O_RDWR 可读可写打开)

图片353-1024x160.png

图片36.png

gcore 内存转储,将当前进程转储为映像文件,需要安装gdb。

gcore 21919  将PID为21919进程转储到当前目录

图片372.png

strings -n 8 core.21919|ag 'http:'   查看网络行为

图片382.png


文章参考:

https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

《Unix/Linux网络日志分析与流量监控》

https://xz.aliyun.com/t/48


本文作者:al0ne

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/82707.html

Tags:
评论  (0)
快来写下你的想法吧!

al0ne

文章数:4 积分: 53

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号