UNIX应急响应攻略( 四 )


检查各配置文件查找后门位置 , 未授权的信任关系和未授权的用户ID 。
/etc/passwd , 查找未授权的用户帐号和权限 。初级的入侵者会添加uid=0的用户 ,
有人也会把系统中一个不起眼的原本没有shell的普通账户改成可登陆获得shell执行命令 ,
然后他可以通过一个suid位的ksh或其他的安置在本地的后门马上得到rootshell.
/etc/shadow,确保每个用户都有密码认证;当然攻击者给自己的账户加一个md5 hash其实也是非常简单的事 。
/etc/groups,查找权限的升级和访问范围的扩大 。
/etc/hosts,列出本地DNS条目 。
/etc/hosts.equiv,检查信任关系 。
~/.rhosts,检查基于用户的信任关系 , 这种很滥的后门相信大家都知道 。
/etc/hosts.allow && /etc/hosts.deny 检查tcpwrapper的规则 。
/etc/rc*,检查启动文件 。
Crontab文件 , 列出计划事件 。
/etc/inetd.conf,列出端口所监听的服务 。
===========
转储系统RAM
===========
主要是从系统转移/proc/kmem或/proc/kcore文件 , 该文件以非连续方式包含系统RAM的内容 。
{{深入调查}}
============
检查系统日志
============
Unix有很多日志 , 这些为应急响应提供重要的线索 。日志文件大多位于公用目录 , 通常是/var/log,或/usr/adm,/var/adm,
有些日志位于禁止访问的/etc目录 。具体请参考当前操作体系统文档 。
其中syslogd守护进程提供非常强大的日志功能 , 比如装载一个内核模块的登记 , 其配置文件为/etc/syslog.conf ,
通常它提供的最有用的日志是:messages,secure,syslog.在syslog.conf中每一行含有三个字段:
facility字段表示产生该日志文件的子系统;priority字段表明事件的严重级别;
action字段表明如何记录日志 , 它提供了远程网络记录的能力 。
TCP wrapper日志也利用syslog记录 , 其中可能会有telnet,ssh,ftp等远程登录的信息 。这些日志中有很多有价值的条目:
尝试登陆的时间日期 , 主机名称 , 访问的服务类型 , 以及源IP地址 。
其他的网络日志比如 , web,ftp,sql通常自身都提供了较为详细的信息 。Apache默认日志在/usr/local/apache/logs,
最有用的日志是access_log,还有ssl_request_log,ssl_engine_log也能提供有价值的信息 。其中可能包含攻击前的扫描记录 。
Su命令日志 , 记录了每一次执行su命令的动作:时间日期 , 成功与否 , 终端设备 , 用户ID.有些Unix具有单独的su日志 ,
有些则保存在syslog中 。
登陆用户日志:utmp或wtmp文件保存了有关当前登陆到系统的用户的信息 。此文件根据各UNIX版本的不同 ,
名称及存储位置有所差异 。保存的基本信息是用户名 , 用于登陆的终端以及登陆的时间 。文件以二进制格式存储 。
查询utmp,wtmp文件应使用适当的客户端 , 如w,who,finger,last.检索成功 , 失败与用户名未知的登陆条目 。
Cron日志记录了定时作业的内容 , 通常在/var/log/cron或默认日志目录中一个称为cron的文件里 。
进程记账 , 如果系统存在acct或pacct日志文件 , 则可使用lastcomm或acctcom命令查看 。该日志为二进制文件 。
Shell历史记录:
[root@ay4z3ro foo]# less ~/.bash_history
如果.bash_history被链接到/dev/null文件 , 或者环境变量中的$HISTFILE,$HISTFILESIZE两个变量值为0 , 那么肯定有人非法活动过了 。
大多数入侵者都会修改或删除日志 , 虽然理论上能够做到除种植lkm rootkit之外几乎不留任何痕迹 , 但在实际入侵中 ,
善后工作实际上是个不小的工程 , 不仅依赖入侵者对系统的熟知程度 , 而且当处理过多繁琐的内容时 , 疏忽很容易出现 。比如:刚得到

推荐阅读