应急响应/安全溯源

电脑入侵排查

Linux系统    Ubuntu`,`Debian`,`RedHat`,`CentOS`,`ArchLinux` 部分方法对`Mac OSX`操作系统也是适用的
异常的帐号和权限    "检查异常帐号
搜寻用户
`cat /etc/passwd
筛选: ```shcat
/etc/passwd | awk -F: '{print $7}' | sort | uniq -c``` 改命令的作用是打印所有类型的shell和对应的数量, 对于有shell的用户, 要仔细检查. 检查用户 如果上一步获得了某个异常的用户名(假设为`hacker`), 可以用以下方法详细检查该用户: - 查看用户id和组信息: id hacker - 查看用户最近登录信息: lastlog -u hacker - 查看用户历史登录信息: last hacker - 查看用户登录失败信息: lastb hacker - 查看综合信息: finger hacker 注: `finger`命令在某些操作系统里不是内置的, 可以自行用包管理工具安装, 如: > Ubuntu/Debian: apt-get install finger > CentOS/RedHat: yum install finger > ArchLinux: pacman -S finger 下面提到的其他非内置命令类似 检查异常权限 一般的Linux用户都会用`sudo`来让普通用户可以执行root操作, 因此对于已经存在的普通用户, 也不可掉以轻心. `sudo`所管理的权限, 在`/etc/sudoers`以及`/etc/sudoers.d`中可以查看, 最好经常检查改文件以确保没有普通用户获得了意外的权限. 对于每个普通用户, 可以用命令`groups username`来查询其所属的组, 如果是root或者sudo组, 或者该组在`/etc/sudoers`文件中, 那就要格外警觉了. " 异常的自启动项 "Linux下的自启动流程根据其服务管理器的不同而不同, 常用的有以下三种: Upstart [Upstart][upstart]是基于事件的,用来取代古老的/sbin/init进程来处理任务和服务自启动的方法. 查看该类型的自启动文件可以用以下命令: - 查看所有自启动项目: `initctl list` - 查看某个自启动项目: `initctl show-config evil` SystemV [SystemV][systemv]就是常用的`service start/stop/status xxx.service`命令背后的服务管理系统. 查看该类型的自启动文件可以用以下命令: - 查看自启动脚本: `ls /etc/init.d/` - 查看运行级别的符号链接: `ls /etc/rc*.d/` SystemD [SystemD][systemd]是现代的服务管理系统, 比较新的Linux版都已经迁移为SystemD了. 有两种方式查看所有自启动的服务: - `systemctl list-unit-files –type=service` - `ls /lib/systemd/system/*.service /etc/systemd/system/*.service` 旧版本的Linux一般是Upstart和SystemV混用, 新版本都大多迁移到SystemD了." 异常的计划任务 除了上述的自启动服务, Linux下还可以通过计划任务来进行持久化运行, 检查异常的计划任务相对简单,只需要查看`/etc/crontab`以及子目录下`/etc/cron.*`的计划任务文件即可. bash初始化检查 "用过Linux的都知道, 在`$HOME/.bashrc`文件里可以进行初始化配置并应用于每个shell, 也就是说里面的脚本在每次新开一个terminal的时候都是有可能被运行的. 这类配置文件包括`.bashrc`, `.bash_profile`, `.bash_login`, `.profile`等等. 其是否运行以及运行的顺序由shell被调用时是否登录, 以及是否交互运行来决定, 对于bash来说, 执行流程如下表: 脚本名称 |交互登录|交互非登录|脚本(即非交互) ------------------|--------|----------|-------------- `/etc/profile `| A | | `/etc/bash.bashrc`| | A | `~/.bashrc `| | B | `~/.bash_profile `| B1 | | `~/.bash_login `| B2 | | `~/.profile `| B3 | | `$BASHENV `| | | A ` `| | | `~/.bash_logout `| C | | 其中执行顺序为`A->B->C`, B[123]表示只有当第一个脚本存在时候才会执行. 用流程图表示如下: ![启动顺序](http://www.solipsys.co.uk/images/BashStartupFiles1.png) 关于登录/非登录shell以及交互/非交互shell的内容可以参考网上的其他介绍, 这里就不展开了. 只要知道自己的shell初始化所执行的文件顺序, 并检查这些文件看是否有可疑命令, 从而才能发现异常信息. 应用级别的自启动 要找到所有可疑的自启动项是困难的, 有经验攻击者可以修改现有的自启动脚本, 额外拉起命令,从而减少被发现的风险. 一些Linux桌面版本也会负责运行类似的自启动命令, 比如我最爱的xfce,在`Settings -> Session Starup -> Application Autostart`就可以添加自启动的应用. 异常的记录 异常的命令历史记录 一般而言, 黑客获取shell之后会在上面执行某些命令, 我们可以通过`history`命令来查看曾经运行过的命令.或者直接查看`~/.bash_history`文件. 聪明的黑客干完坏事也许会清理痕迹, 但如果发现history被恶意清除,或者被异常篡改, 那也足以给我们警示的信号了. 异常的日志记录 "日志, 尤其是系统日志, 是我们绝佳的帮手, 下面一些命令可以用来读取日志文件并输出相关信息: - 查看每个用户最近的登录时间和ip: `lastlog` - 查看每个用户的登录记录: `last` - 查看每个用户的登录尝试(包括失败的)记录: `lastb` - 查看当前登录的用户,ip以及正在执行的命令: `w` 当然, 有心的攻击者也会在这些命令中隐藏自己的痕迹, 比如使用小工具[hidemyass][hidemyass]. 系统日志一般由rsyslogd进程产生, 配置在`/etc/rsyslog.conf`文件以及`/etc/rsyslog.d/`目录下, 常见的日志: - /var/log/messages: 一般的系统日志 - /var/log/kern.log: 系统内核日志 - /var/log/boot.log: 系统启动日志 - /var/log/auth.log: 登录相关的日志, 比如ssh/sudo成功失败的日志都在这里 - /var/log/secure: 同上 - /var/log/cron.d: cron计划任务的执行日志 异常的进程 "查找异常进程, 可以用`top`命令查看正在运行的程序所占用的资源, 或者用`ps -ef`列出当前系统所用的进程. 如果发现自己不认识的进程, 可以用以下命令进行详细的检查: - 查看该进程启动的完整命令行: `ps eho command -p $PID` - 查看该进程启动时候所在的目录: `readlink /proc/$PID/cwd` - 查看该进程启动时的完整环境变量: `strings -f /proc/$PID/environ | cut -f2 -d ‘ ‘` - 列出该进程所打开的所有文件: `lsof -p $PID` - 列出该进程所打开的网络连接: `netstat -pan | grep $PID` 隐藏进程-通过LKM模块排查
异常的网络流量 Linux桌面用户-wireshark Linux服务端-tcpdump

McAfee 检查McAfee的VirusScan控制台
检查McAfee HIP防火墙
Windows防火墙
检查IIS相关设置和网站目录访问权限
检查管理员帐号
检查Windows日志
检查IIS网站访问日志
检查FTP日志
检查服务器运行进程
备份数据

猜你喜欢

转载自www.cnblogs.com/AtesetEnginner/p/11324961.html