# Linux入侵检测基础

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2015-12-18T08:57:00Z
Canonical: https://wepostx.com/topics/1252

> 乌云历史资料归档
>
> **原始作者：** Blood_Zero
> **原始编号：** superkieran-wooyundrops:955
> **原始发布时间：** 2015-12-18 16:57
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

# 0x00 审计命令

在linux中有5个用于审计的命令：

- last：这个命令可用于查看我们系统的成功登录、关机、重启等情况；这个命令就是将/var/log/wtmp文件格式化输出。

- lastb：这个命令用于查看登录失败的情况；这个命令就是将/var/log/btmp文件格式化输出。

- lastlog：这个命令用于查看用户上一次的登录情况；这个命令就是将/var/log/lastlog文件格式化输出。

- who：这个命令用户查看当前登录系统的情况；这个命令就是将/var/log/utmp文件格式化输出。

- w：与who命令一致。
关于它们的使用：man last，last与lastb命令使用方法类似：

```text
#!bash last [-R] [-num] [ -n num ] [-adFiowx] [ -f file ] [ -t YYYYMMDDHHMMSS ] [name...] [tty...] lastb [-R] [-num] [ -n num ] [ -f file ] [-adFiowx] [name...] [tty...] who [OPTION]... [ FILE | ARG1 ARG2 ]
```
参数说明：

- 查看系统登录情况
last：不带任何参数，显示系统的登录以及重启情况

![原文图片](/media/2016/06/82cf7b42532b3b18032414e30cea4241)

- 只针对关机/重启
使用-x参数可以针对不同的情况进行查看

![原文图片](/media/2016/06/b3e8fe5d0e7c6e9969b48b1f34c78582)

- 只针对登录
使用-d参数，并且参数后不用跟任何选项

![原文图片](/media/2016/06/fd5cf3abc76d1225033b076692cbf9fe)

- 显示错误的登录信息
lastb

- 查看当前登录情况
who、w

# 0x01 日志查看

在Linux系统中，有三类主要的日志子系统:

- 连接时间日志: 由多个程序执行，把记录写入到/var/log/wtmp和/var/run/utmp，login等程序会更新wtmp和utmp文件，使系统管理员能够跟踪谁在何时登录到系统。（utmp、wtmp日志文件是多数Linux日志子系统的关键，它保存了用户登录进入和退出的记录。有关当前登录用户的信息记录在文件utmp中; 登录进入和退出记录在文件wtmp中; 数据交换、关机以及重启的机器信息也都记录在wtmp文件中。所有的记录都包含时间戳。）

- 进程统计: 由系统内核执行，当一个进程终止时，为每个进程往进程统计文件（pacct或acct）中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。

- 错误日志: 由syslogd（8）守护程序执行，各种系统守护进程、用户程序和内核通过syslogd（3）守护程序向文件/var/log/messages报告值得注意的事件。另外有许多Unix程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
日志目录：/var/log(默认目录)

- 查看进程日志
cat /var/log/messages

![原文图片](/media/2016/06/e638d8f0161593656d174f7bb76cda4a)

- 查看服务日志
cat /var/log/maillog

![原文图片](/media/2016/06/bb11eac9ba5d4d25d42d770a5cbfdfd1)

# 0x02 用户查看

Linux不同的用户，有不同的操作权限，但是所有用户都会在/etc/passwd /etc/shadow /etc/group /etc/group- 文件中记录；

- 查看详细

- less /etc/passwd：查看是否有新增用户

- grep :0 /etc/passwd：查看是否有特权用户（root权限用户）

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

- awk -F: '$3==0 {print $1}' /etc/passwd：查看是否存在特权用户

- awk -F: 'length($2)==0 {print $1}' /etc/shadow：查看是否存在空口令用户
注：linux设置空口令：passwd -d username

![原文图片](/media/2016/06/4b81f3df69ab6fd6df31cb0cfacd70f0)

# 0x03 进程查看

- 普通进程查看
进程中我们一般使用ps来查看进程；man ps

- ps -aux：查看进程

- lsof -p pid：查看进程所打开的端口及文件

- 检查隐藏进程

- ps -ef | awk '{print }' | sort -n | uniq >1

- ls /proc | sort -n |uniq >2

- diff 1 2
注：以上3个步骤为检查隐藏进程

# 0x04 其他检查

- 检查文件

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

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

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

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

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

- rpm -qf /bin/ls：检查文件的完整性（还有其它/bin目录下的文件）

- 检查网络

- ip link | grep PROMISC：正常网卡不应该存在promisc，如果存在可能有sniffer

- lsof -i

- netstat -nap：查看不正常端口

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

- 计划任务

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

- cat /etc/crontab

- ls -l /etc/cron.*：查看cron文件是变化的详细

- ls /var/spool/cron/

- 检查后门
对于linux的后门检查，网络上有一些公开的工具，但是在不使用这些工具的前提时，我们可以通过一些命令来获取一些信息。
首先就是检测计划任务，可以参考上面；
第二：查看ssh永久链接文件：vim $HOME/.ssh/authorized_keys
第三：lsmod：检查内核模块
第四：chkconfig --list/systemctl list-units --type=service：检查自启
第五：服务后门/异常端口（是否存在shell反弹或监听）
其它：
ls /etc/rc.d
ls /etc/rc3.d

## Replies
