红炉点雪

Linux手工排查总结

0x00 一般的入侵步骤

从webshell开始

1、禁止历史命令

1
export HISTCONTROL = ignorespace

然后在所需要执行的命令前面加空格

1
2
3
HISTFILESIZE=0;
HISTFILE=0;
HISTSIZE=0;

依次执行上面的命令也可(必须大写)

2、查看当前账号信息

查看系统内核信息

1
2
3
4
5
uname –a
cat /proc/version
lsb_release –a
cat /etc/redhat-release (redhat系列)
cat /etc/issue

查看当前用户权限

1
2
id
whoami

查看网卡信息

1
ifconfig

3、查看开机启动项

1
ls -alt /etc/init.d/

4、查看端口通信信息

1
netstat –antlp | more

目的:找到一些当前正在运行的服务,看看那些服务可以被利用。也可以发现一些内网通信的网段。

5、查看最近用户登录信息

1
2
lastlog
last

linux入侵的目的就是为了拿到root 权限。
通过上述的一些分析如果系统不是root权限则需要根据响应的内核版本信息做提权。
通过读取一些tmp目录,web目录等目录下的信息查看一下响应的本机ip对应的内网网段或者直接通信的内网端口信息。
拿到root权限以后对这台机器种一个远程的rookit长期做监控为后续做内网渗透打基础。
清除日志信息。

Linux常见的日志文件详述如下

1、/var/log/boot.log(自检过程)
2、/var/log/cron (crontab守护进程crond所派生的子进程的动作)
3、/var/log/maillog (发送到系统或从系统发出的电子邮件的活动)
4、/var/log/syslog (它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件)
要让系统生成syslog日志文件,
在/etc/syslog.conf文件中加上:*.warning /var/log/syslog   
该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息
5、/var/run/utmp
该日志文件需要使用lastlog命令查看
6、/var/log/wtmp
(该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件)
last命令就通过访问这个文件获得这些信息
7、/var/run/utmp
(该日志文件记录有关当前登录的每个用户的信息)
8、/var/log/xferlog
(该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件)
/var/log/message 包括整体系统信息
/var/log/auth.log 包含系统授权信息,包括用户登录和使用的权限机制等
/var/log/userlog 记录所有等级用户信息的日志。
/var/log/cron 记录crontab命令是否被正确的执行
/var/log/xferlog(vsftpd.log)记录Linux FTP日志
/var/log/lastlog 记录登录的用户,可以使用命令lastlog查看
/var/log/secure 记录大多数应用输入的账号与密码,登录成功与否
var/log/wtmp   记录登录系统成功的账户信息,等同于命令last
var/log/faillog   记录登录系统不成功的账号信息,一般会被黑客删除

0x01 一般linux的排查方向

可疑信息

某台机器出现出口流量过大,占用太多的宽带资源;
某机器cpu占用过大;
应用服务器出现暗链;
服务器出现报警信息……

登录机器开始排查

根据可疑进程排查

top命令查看占用资源较多的进程

查看可疑进程所在的文件

ps -aux (查看进程)
top (查看进程)
lsof -p pid (查看进程所打开的端口及文件)
lsof -c 进程名 (查看关联文件)
ps -aux | grep python | cut -d ‘ ‘ -f 2 | xargs kill (杀死python相关的进程)

检查/etc/inetd.conf文件

输入 cat /etc/inetd.conf | grep –v “^#”
cat /etc/init.conf | grep –v “^#”
输出的信息就是你这台机器所开启的远程服务。

1
lsof –p PID

对所定位出的文件做进一步的排查分析

根据经验排查

排查常见的目录

比如
tmp目录
desktop目录
/根目录
/usr/bin目录
/usr/sbin目录等

1
2
ls –alt /usr/bin
ls –alt /tmp

排查开机启动项

1
ls -alt /etc/init.d/

查找72小时内新增的文件

1
find / -ctime -2

find / -ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
find grep ls命令使用的频率比较高

查看网卡信息

1
ip link | grep PROMISC

正常网卡不应该存在promisc,如果存在可能有sniffer
lsof -i
netstat -nap  查看不正常端口
arp -a  查看arp记录是否正常
ifconfig -a  查看网卡设置

查看可疑端口

1
netstat –antlp | more

分析可疑进程案例:

1
2
netstat -antlp
ps axu|grep 3113

使用ls 以及 stat 查看系统命令是否被替换

两种思路:
第一种查看命令目录最近的时间排序,第二种根据确定时间去匹配。

1
2
ls -alt /usr/bin   | head -10
ls -al /bin /usr/bin /usr/sbin/ /sbin/ | grep "Jan 15"

PS:如果日期数字<10,中间需要两个空格。比如1月1日,grep “Jan 1”

隐藏进程查看

1
2
3
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2

查看UID为0的帐号:

1
awk -F: '$3==0 {print $1}' /etc/passwd

查看能够登录的帐号:

1
cat /etc/passwd|grep -E "/bin/bash$"

PS:UID为0的帐号也不一定都是可疑帐号,Freebsd默认存在toor帐号,且uid为0(toor 在BSD官网解释为root替代帐号,属于可信帐号)

1
2
3
4
5
crontab  –l 查看计划任务
crontab -u root -l  查看root用户的计划任务
cat /etc/crontab
ls -l /etc/cron.*  查看cron文件是否变化的详细信息
ls /var/spool/cron/

查看etc目录任务计划相关文件

1
ls /etc/cron*

查看用户登录情况

使用lastlog命令,系统中所有用户最近一次登录信息。
使用lastb命令,用于显示用户错误的登录列表。
使用last命令,用于显示用户最近登录信息(数据源为/var/log/wtmp,var/log/btmp)

utmp文件中保存的是当前正在本系统中的用户的信息。
wtmp文件中保存的是登录过本系统的用户的信息。
/var/log/wtmp文件结构和/var/run/utmp文件结构一样,都是引用 /usr/include/bits/utmp.h 中的 struct utmp

系统环境变量分析

1
 echo $PATH

查看sshd 相关的免密钥登录信息
Rookit相关的检测

1
2
vim $HOME/.ssh/authorized_keys
查看ssh永久链接文件

lsmod  检查内核模块
chkconfig –list/systemctl list-units –type=service  检查自启
chkrootkit rkhunter(www.chkrootkit.org rkhunter.sourceforge.net)Conmodo

查杀命令

1
2
3
4
5
6
kill -9
chattr –i
rm 
setfacl
ssh 
chmod

1、设置redis授权访问。
2、阻断服务器通讯。
(如iptables -A INPUT -s xmr.crypto-pool.fr -j DROP and iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP)
阻断外网访问
3、清除定时器任务。(如systemctl stop crond),如果删不掉用lsattr 查看权限 然后chmod –R 777 加权限 然后删除
4、删除木马和未知公钥文件。(如/tmp/ddg.2010 ,/tmp/ wnTKYg ,等及 ~/.ssh/中未知授权)
5、终止木马进程。(如pkill wnTKYg ,pkill ddg.2010)

CONTACT