Linux 入侵检测分析技术

295 阅读6分钟

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

3. 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
用户为
需重点关照
用户

2.

进一步分析用户
itcast

3.

查看用户
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
章节。或者参考下图:

简单分析如下:

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,
都可能会导致我们正常的网络请求被攻击者监听并篡改
.
这些小小的修改也许不是很明显
,
可一旦发现自身网络环境
不太对劲
’,
就要提高警惕
,
仔细排查了
.

4.

小结

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

传智播客黑马程序员
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++
与网络攻防版块,我们会随时为大家分享更多有益的文章。