全国咨询/投诉热线:400-618-9090

首页技术文章正文

Linux 入侵检测分析技术

更新时间:2018-04-27 来源:黑马程序员 浏览量:

1. 概述

最好的安全防护当然是“御敌于国门之外”, 通过安全防护技术,来保证当前主机不被非授权人员入侵,但是“道高一尺,魔高一丈”, 再好的防护手段、往往也会有疏漏的地方。在这种情况下,事后(入侵后)的追溯技术就很重要了。好比一个窃贼到我们家溜达一圈,我竟然无法知道是否窃贼来过,细思这是一件非常恐怖的事情。这就意味着,我们的家(主机)不在安全,鬼知道窃贼什么时候再来溜达一圈。

入侵分析技术一般通过是通过分析主机关键的文件记录、进程信息等来达到分析主机是否被侵入的目的。从安全防护的角度来讲,这是一项事后追踪技术(可追溯性);从攻击的角度来说, 当Hack成功实施攻击(入侵)后,要进行掩踪灭迹,也就是清除入侵痕迹,当知道入侵分析哪些地方后,那么作为入侵者也就明白需要重点关注哪些入侵痕迹了。

所谓“未知攻,焉知防”, 同样也可以说“未知防,焉知攻”, 攻防之道,本就是在攻防博弈中相互提高。

2. 环境

本次介绍的入侵分析技术基于环境如下:

l 发行版:

Panda.Guo@2018-04-18 10:42:55 $ lsb_release -a

No LSB modules are available.

Distributor ID: Debian

Description:    Debian GNU/Linux 9.4 (stretch)

Release:    9.4

Codename:   stretch

l 内核

Panda.Guo@2018-04-18 10:59:33 $ uname -a

Linux PandaGuo 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux

1. Debian 9 入侵分析

3.1 用户帐号

从攻击的角度来讲,Hacker实施攻击后,除了会“掩踪灭迹”之外还会进行“创建后门”,以便将这种攻击的机会持续下去,而创建后门用户帐号,往往是比较可行的途径。

1. 搜寻具备shell用户的帐号, /etc/passwd

Panda.Guo@2018-04-18 11:34:31 $ cat /etc/passwd|awk -F: '{print $7}'| sort |uniq -c

  3 /bin/bash

  21 /bin/false

  1 /bin/sync

  17 /usr/sbin/nologin

Panda.Guo@2018-04-18 11:45:31 $ cat /etc/passwd | grep "bash"

  root:x:0:0:root:/root:/bin/bash

  panda:x:1000:1000:panda,,,:/home/panda:/bin/bash

  itcast:x:2001:2001::/home/itcast:/bin/bash

Panda.Guo@2018-04-18 11:45:40 $

对其中有shell的用户需要重点关注,本文假设itcast用户为“需重点关照”用户

1.进一步分析用户itcast

2.查看用户id和组信息:

Panda.Guo@2018-04-18 11:45:40 $ id itcast

  uid=2001(itcast) gid=2001(itcast) group=2001(itcast)

l 查看用户最近登录信息

Panda.Guo@2018-04-18 11:51:33 $ lastlog -u itcast

Username         Port     From             Latest

itcast           pts/10   127.0.0.1        Thu Apr 12 19:03:20 +0800 2018

l 查看用户历史登录信息: last hacker

Panda.Guo@2018-04-18 11:51:35 $ last itcast
itcast   pts/10       127.0.0.1        Thu Apr 12 19:03 - 10:16  (15:12)
itcast   pts/6        172.16.28.59     Thu Apr 12 16:03 - 16:03  (00:00)
itcast   pts/6        172.16.28.59     Thu Apr 12 16:02 - 16:03  (00:00)
 
wtmp begins Sun Apr  1 23:41:17 2018

l 查看用户登录失败信息:

Panda.Guo@2018-04-18 11:52:45 $ sudo lastb itcast

itcast   ssh:notty    127.0.0.1        Thu Apr 12 19:03 - 19:03  (00:00)

itcast   ssh:notty    172.16.28.59     Thu Apr 12 16:03 - 16:03  (00:00)

 

btmp begins Tue Apr  3 09:20:30 2018

Panda.Guo@2018-04-18 11:52:49 $ 

l 查看综合信息: finger hacker

Panda.Guo@2018-04-18 11:53:20 $ finger itcast

Login: itcast                   Name:

Directory: /home/itcast                 Shell: /bin/bash

Last login Thu Apr 12 19:03 (CST) on pts/10 from 127.0.0.1

No mail.

No Plan.

果itcast用户登录有异常的IP登录, 则需重点关注

3.2 可提权用户(sudo)

Debian系统允许普通用户通过sudo来获取root用户权限, 因此对于已经存在的普通用户,如果其在/etc/sudoers或者/etc/sudoers.d/下的文件中, 则表示此普通用户可以通过sudo来完成root操作, 需要特别关注。

另可以通过命令groups itcast(其中itcast指代需要关注的用户username), 如果该用户所属的组是root或者 sudo组,或者该用户在/etc/sudoers(包括/etc/sudoer.d/目录), 那就需要重点关注了。

3.3 开机自启服务

不同的Linux发行版,采用的服务管理器是不同的, Debian 8以上已经采用Systemd作为服务器管理器,其实目前较新的发行版系统上多在采用systemd。本次我们以Systemd为例来分析开机自起的一些程序。

对于systemd服务管理器来说,可以通过下述方式查看开机自启的服务:

Panda.Guo@2018-04-18 15:25:23 $ systemctl list-unit-files --type=service | grep "enabled"

  accounts-daemon.service                    enabled

  anacron.service                            enabled

  auditd.service                             enabled

  autovt@.service                            enabled

  。。。

入侵后,留下一些开机自起的服务,以便后续继续入侵。也是入侵保持持久性的一种手段。

3.4 计划(定时)任务

除了开机自启动服务外, Debian还可以通过计划任务来进行持久化运行。

检查异常的计划任务相对简单:

只需要查看/etc/crontab以及子目录下/etc/cron.*的计划任务文件即可.

3.5 shell的初始化

不同的Linux发行版的默认shell是不一致的, 一般debian系统默认是dash, 而我自己偏爱bash, 一般系统安装完成后,我会调整我的shell为bash, 本节以bash为例进行描述。

对于shell来说,可分为交互shell/非交互shell、 登录shell和非登录shell。本质上就是在shell启动期间,默认执行的配置文件不同而已。 关于这块的详细区别,可参考man bash 中的INVOCATION章节。或者参考下图:

1524800687561_20180426175516701.png

简单分析如下:

l 非交互/非登录shell: $BASh_ENV(环境变量)

l 非交互/登录shell:/etc/profile ($HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile按次序先存在的执行)

l 交互/非登录shell: /etc/bash_bashrc、$HOME/.bashrc

l 交互/登录shell:/etc/profile ($HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile按次序先存在的执行)

上面描述的比较复杂。简单说,就是bash在启动时,要执行几个脚本文件。 这些文件中如果有命令,在某种情况下(登录非登录、交互非交互)可能会被执行。 入侵分析的重点就是查看这些文件中是否存在可疑命令。

3.6 历史命令

一般而言, 入侵者获取shell之后会在上面执行某些命令, 我们可以通过history命令来查看曾经运行过的命令.或者直接查看~/.bash_history文件. 高明的入侵者完成入侵后,也会进行某些掩踪灭迹。 因此, 如果发现曾经运行过的命令中有一些可疑命令(莫名奇妙的命令),或者发现history被恶意清除,或者被异常篡改, 这也是我们常用的入侵分析技术。

和history命令相关有几个环境变量,需要我们特别关注,详情可通过man bash 查看

l HISTFILE: 保存历史命令的文件, 默认是 ~/.bash_history

l HISTFILESIZE: 历史文件中包含的最大行数。

l HISTSIZE: 命令历史中保存的命令数量行数。

l HISTTIMEFORMAT: 保存历史命令的时间格式。

3.7 系统日志

在debian9上,系统日志统一由rsyslog进程产生, 和rsyslog相关的配置可参考/etc/rsyslog.conf文件以及/etc/rsyslog.d/目录。

l 登录相关信息

 查看每个用户最近的登录时间和ip: lastlog

 查看每个用户的登录记录: last

 查看每个用户的登录尝试(包括失败的)记录: lastb

 查看当前登录的用户,ip以及正在执行的命令: w

l 一些常见的系统日志介绍如下:

 /var/log/messages: 一般的系统日志

 /var/log/kern.log: 系统内核日志

 /var/log/boot.log: 系统启动日志

 /var/log/auth.log: 登录相关的日志, 比如ssh/sudo成功失败的日志都在这里

 /var/log/cron.d: cron计划任务的执行日志

l 审计, 审计日志由auditd产生,/etc/audit/auditd.conf为审计配置文件,/etc/audit/audit.rules 为审计规则文件。

 /var/log/audit/* : 为审计记录,可以进一步分析,也许可以发现一些意想不到的痕迹(如果有的话).

3.8 可疑进程

一般可通过top命令查看正在运行的程序所占用的资源, 或者用ps aux列出当前系统所用的进程. 如果发现可疑进程(没见过、耗资源), 可以用以下命令进一步:

l 查看该进程启动的完整命令行: ps eho command -p $PID

l 查看该进程启动时候所在的目录: readlink /proc/$PID/cwd

l 查看该进程启动时的完整环境变量: strings -f /proc/$PID/environ | cut -f2 -d ‘ ‘

l 列出该进程所打开的所有文件: lsof -p $PID

如果某个可疑进程正在活动,一般会与外界有网络交互,可通过如下方法进一步分析:

l 查看当前主机的网络连接情况, netstat -apn | grep $PID

l 抓包分析,tcpdump 或者 使用图形化抓包工具wireshark

l 查看主机防火墙iptables, DNS(/etc/resolv.conf和/etc/resolvconf/)、http代理,或者/etc/hosts, 都可能会导致我们正常的网络请求被攻击者监听并篡改. 这些小小的修改也许不是很明显,可一旦发现自身网络环境’不太对劲’, 就要提高警惕, 仔细排查了.

1. 小结

我们研究入侵分析,从“攻”的角度来说,是为了在“实施攻击”后,在“掩踪灭迹”中做的更加彻底,更便于我们攻击的持久性, 从“防”的角度来说, 我了解主机系统被入侵后,知道在哪些地方会留下痕迹,通过收集这些入侵痕迹,结合大数据的分析技术来绘制入侵者的攻击路线图。以便更好的防护。

传智播客黑马程序员C/C++与网络攻防学科培养专项白帽子安全人才,

课程包含 C语言开发实战、C高级编程、C++核心编程与桌面应用开发、Linux高并发服务器开发、信息安全与企业应用开发、分布式云平台开发、入侵检测与网络攻防等阶段。

黑马程序员C/C++与网络攻防课程关键技术点

涉及到的热门技术有:·

Nginx(高并发反向代理服务器)

·GIT(分布式版本控制系统)

·Redis(NoSQL缓存数据库)

·Memcache(key-value分布式缓存数据库)

·Libevent(高并发反应堆模式API)

·Epoll(Linux内核高级多路IO技术)

·GDB(逆向工具)

·SHM(共享内存映射机制)

·VIM(文本编辑器)

·QT(跨平台应用界面框架)

涉及到的新兴技术有:

·fastDFS(分布式文件系统)

·Golang(Google推出的开发编程语言)

·Docker(虚拟化容器技术)

·Go-micro(Go语言微服务框架)

·Beego(Go语言高性能web服务器框架)

·GEO(地理位置核心算法)

·ASN.1(跨平台安全传输协议)

·RPC(远程调用过程)

·Oracle(高级事务关系型数据库)

涉及到的网络攻防技术有:

·Kali Linux(Hacker操作系统)

·Wireshark(网络抓包分析工具)

·Aircrack-ng(可破解WEP/WPA/WPA2加密)

·AppScan(漏洞扫描工具)

·DDos(分布式拒绝服务攻击)

·Web渗透(Web页面代码的攻击形式)

·iptables(Linux内核防火墙技术)

·NetCat(网络攻击瑞士军刀)

·TCPDump(Linux内核网络协议捕捉器)

·SQLMAP(SQL注入漏洞攻防技能)


本文版权归黑马程序员C/C++与网络攻防学院所有,欢迎转载,转载请注明作者出处。谢谢!


作者:黑马程序员C/C++与网络攻防学院


首发:http://c.itheima.com/


javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名