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++
与网络攻防版块,我们会随时为大家分享更多有益的文章。