首頁技術(shù)文章正文

Linux 入侵檢測(cè)分析技術(shù)

更新時(shí)間:2018-04-27 來源:黑馬程序員 瀏覽量:

1. 概述

最好的安全防護(hù)當(dāng)然是“御敵于國(guó)門之外”, 通過安全防護(hù)技術(shù),來保證當(dāng)前主機(jī)不被非授權(quán)人員入侵,但是“道高一尺,魔高一丈”, 再好的防護(hù)手段、往往也會(huì)有疏漏的地方。在這種情況下,事后(入侵后)的追溯技術(shù)就很重要了。好比一個(gè)竊賊到我們家溜達(dá)一圈,我竟然無法知道是否竊賊來過,細(xì)思這是一件非??植赖氖虑?。這就意味著,我們的家(主機(jī))不在安全,鬼知道竊賊什么時(shí)候再來溜達(dá)一圈。

入侵分析技術(shù)一般通過是通過分析主機(jī)關(guān)鍵的文件記錄、進(jìn)程信息等來達(dá)到分析主機(jī)是否被侵入的目的。從安全防護(hù)的角度來講,這是一項(xiàng)事后追蹤技術(shù)(可追溯性);從攻擊的角度來說, 當(dāng)Hack成功實(shí)施攻擊(入侵)后,要進(jìn)行掩蹤滅跡,也就是清除入侵痕跡,當(dāng)知道入侵分析哪些地方后,那么作為入侵者也就明白需要重點(diǎn)關(guān)注哪些入侵痕跡了。

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

2. 環(huán)境

本次介紹的入侵分析技術(shù)基于環(huán)境如下:

l 發(fā)行版:

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 內(nèi)核

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 用戶帳號(hào)

從攻擊的角度來講,Hacker實(shí)施攻擊后,除了會(huì)“掩蹤滅跡”之外還會(huì)進(jìn)行“創(chuàng)建后門”,以便將這種攻擊的機(jī)會(huì)持續(xù)下去,而創(chuàng)建后門用戶帳號(hào),往往是比較可行的途徑。

1. 搜尋具備shell用戶的帳號(hào), /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 $

對(duì)其中有shell的用戶需要重點(diǎn)關(guān)注,本文假設(shè)itcast用戶為“需重點(diǎn)關(guān)照”用戶

1.進(jìn)一步分析用戶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登錄, 則需重點(diǎn)關(guān)注

3.2 可提權(quán)用戶(sudo)

Debian系統(tǒng)允許普通用戶通過sudo來獲取root用戶權(quán)限, 因此對(duì)于已經(jīng)存在的普通用戶,如果其在/etc/sudoers或者/etc/sudoers.d/下的文件中, 則表示此普通用戶可以通過sudo來完成root操作, 需要特別關(guān)注。

另可以通過命令groups itcast(其中itcast指代需要關(guān)注的用戶username), 如果該用戶所屬的組是root或者 sudo組,或者該用戶在/etc/sudoers(包括/etc/sudoer.d/目錄), 那就需要重點(diǎn)關(guān)注了。

3.3 開機(jī)自啟服務(wù)

不同的Linux發(fā)行版,采用的服務(wù)管理器是不同的, Debian 8以上已經(jīng)采用Systemd作為服務(wù)器管理器,其實(shí)目前較新的發(fā)行版系統(tǒng)上多在采用systemd。本次我們以Systemd為例來分析開機(jī)自起的一些程序。

對(duì)于systemd服務(wù)管理器來說,可以通過下述方式查看開機(jī)自啟的服務(wù):

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

  。。。

入侵后,留下一些開機(jī)自起的服務(wù),以便后續(xù)繼續(xù)入侵。也是入侵保持持久性的一種手段。

3.4 計(jì)劃(定時(shí))任務(wù)

除了開機(jī)自啟動(dòng)服務(wù)外, Debian還可以通過計(jì)劃任務(wù)來進(jìn)行持久化運(yùn)行。

檢查異常的計(jì)劃任務(wù)相對(duì)簡(jiǎn)單:

只需要查看/etc/crontab以及子目錄下/etc/cron.*的計(jì)劃任務(wù)文件即可.

3.5 shell的初始化

不同的Linux發(fā)行版的默認(rèn)shell是不一致的, 一般debian系統(tǒng)默認(rèn)是dash, 而我自己偏愛bash, 一般系統(tǒng)安裝完成后,我會(huì)調(diào)整我的shell為bash, 本節(jié)以bash為例進(jìn)行描述。

對(duì)于shell來說,可分為交互shell/非交互shell、 登錄shell和非登錄shell。本質(zhì)上就是在shell啟動(dòng)期間,默認(rèn)執(zhí)行的配置文件不同而已。 關(guān)于這塊的詳細(xì)區(qū)別,可參考man bash 中的INVOCATION章節(jié)。或者參考下圖:

1524800687561_20180426175516701.png

簡(jiǎn)單分析如下:

l 非交互/非登錄shell: $BASh_ENV(環(huán)境變量)

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

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

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

上面描述的比較復(fù)雜。簡(jiǎn)單說,就是bash在啟動(dòng)時(shí),要執(zhí)行幾個(gè)腳本文件。 這些文件中如果有命令,在某種情況下(登錄非登錄、交互非交互)可能會(huì)被執(zhí)行。 入侵分析的重點(diǎn)就是查看這些文件中是否存在可疑命令。

3.6 歷史命令

一般而言, 入侵者獲取shell之后會(huì)在上面執(zhí)行某些命令, 我們可以通過history命令來查看曾經(jīng)運(yùn)行過的命令.或者直接查看~/.bash_history文件. 高明的入侵者完成入侵后,也會(huì)進(jìn)行某些掩蹤滅跡。 因此, 如果發(fā)現(xiàn)曾經(jīng)運(yùn)行過的命令中有一些可疑命令(莫名奇妙的命令),或者發(fā)現(xiàn)history被惡意清除,或者被異常篡改, 這也是我們常用的入侵分析技術(shù)。

和history命令相關(guān)有幾個(gè)環(huán)境變量,需要我們特別關(guān)注,詳情可通過man bash 查看

l HISTFILE: 保存歷史命令的文件, 默認(rèn)是 ~/.bash_history

l HISTFILESIZE: 歷史文件中包含的最大行數(shù)。

l HISTSIZE: 命令歷史中保存的命令數(shù)量行數(shù)。

l HISTTIMEFORMAT: 保存歷史命令的時(shí)間格式。

3.7 系統(tǒng)日志

在debian9上,系統(tǒng)日志統(tǒng)一由rsyslog進(jìn)程產(chǎn)生, 和rsyslog相關(guān)的配置可參考/etc/rsyslog.conf文件以及/etc/rsyslog.d/目錄。

l 登錄相關(guān)信息

? 查看每個(gè)用戶最近的登錄時(shí)間和ip: lastlog

? 查看每個(gè)用戶的登錄記錄: last

? 查看每個(gè)用戶的登錄嘗試(包括失敗的)記錄: lastb

? 查看當(dāng)前登錄的用戶,ip以及正在執(zhí)行的命令: w

l 一些常見的系統(tǒng)日志介紹如下:

? /var/log/messages: 一般的系統(tǒng)日志

? /var/log/kern.log: 系統(tǒng)內(nèi)核日志

? /var/log/boot.log: 系統(tǒng)啟動(dòng)日志

? /var/log/auth.log: 登錄相關(guān)的日志, 比如ssh/sudo成功失敗的日志都在這里

? /var/log/cron.d: cron計(jì)劃任務(wù)的執(zhí)行日志

l 審計(jì), 審計(jì)日志由auditd產(chǎn)生,/etc/audit/auditd.conf為審計(jì)配置文件,/etc/audit/audit.rules 為審計(jì)規(guī)則文件。

? /var/log/audit/* : 為審計(jì)記錄,可以進(jìn)一步分析,也許可以發(fā)現(xiàn)一些意想不到的痕跡(如果有的話).

3.8 可疑進(jìn)程

一般可通過top命令查看正在運(yùn)行的程序所占用的資源, 或者用ps aux列出當(dāng)前系統(tǒng)所用的進(jìn)程. 如果發(fā)現(xiàn)可疑進(jìn)程(沒見過、耗資源), 可以用以下命令進(jìn)一步:

l 查看該進(jìn)程啟動(dòng)的完整命令行: ps eho command -p $PID

l 查看該進(jìn)程啟動(dòng)時(shí)候所在的目錄: readlink /proc/$PID/cwd

l 查看該進(jìn)程啟動(dòng)時(shí)的完整環(huán)境變量: strings -f /proc/$PID/environ | cut -f2 -d ‘ ‘

l 列出該進(jìn)程所打開的所有文件: lsof -p $PID

如果某個(gè)可疑進(jìn)程正在活動(dòng),一般會(huì)與外界有網(wǎng)絡(luò)交互,可通過如下方法進(jìn)一步分析:

l 查看當(dāng)前主機(jī)的網(wǎng)絡(luò)連接情況, netstat -apn | grep $PID

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

l 查看主機(jī)防火墻iptables, DNS(/etc/resolv.conf和/etc/resolvconf/)、http代理,或者/etc/hosts, 都可能會(huì)導(dǎo)致我們正常的網(wǎng)絡(luò)請(qǐng)求被攻擊者監(jiān)聽并篡改. 這些小小的修改也許不是很明顯,可一旦發(fā)現(xiàn)自身網(wǎng)絡(luò)環(huán)境’不太對(duì)勁’, 就要提高警惕, 仔細(xì)排查了.

1. 小結(jié)

我們研究入侵分析,從“攻”的角度來說,是為了在“實(shí)施攻擊”后,在“掩蹤滅跡”中做的更加徹底,更便于我們攻擊的持久性, 從“防”的角度來說, 我了解主機(jī)系統(tǒng)被入侵后,知道在哪些地方會(huì)留下痕跡,通過收集這些入侵痕跡,結(jié)合大數(shù)據(jù)的分析技術(shù)來繪制入侵者的攻擊路線圖。以便更好的防護(hù)。

傳智播客黑馬程序員C/C++與網(wǎng)絡(luò)攻防學(xué)科培養(yǎng)專項(xiàng)白帽子安全人才,

課程包含 C語言開發(fā)實(shí)戰(zhàn)、C高級(jí)編程、C++核心編程與桌面應(yīng)用開發(fā)、Linux高并發(fā)服務(wù)器開發(fā)、信息安全與企業(yè)應(yīng)用開發(fā)、分布式云平臺(tái)開發(fā)、入侵檢測(cè)與網(wǎng)絡(luò)攻防等階段。

黑馬程序員C/C++與網(wǎng)絡(luò)攻防課程關(guān)鍵技術(shù)點(diǎn)

涉及到的熱門技術(shù)有:·

Nginx(高并發(fā)反向代理服務(wù)器)

·GIT(分布式版本控制系統(tǒng))

·Redis(NoSQL緩存數(shù)據(jù)庫)

·Memcache(key-value分布式緩存數(shù)據(jù)庫)

·Libevent(高并發(fā)反應(yīng)堆模式API)

·Epoll(Linux內(nèi)核高級(jí)多路IO技術(shù))

·GDB(逆向工具)

·SHM(共享內(nèi)存映射機(jī)制)

·VIM(文本編輯器)

·QT(跨平臺(tái)應(yīng)用界面框架)

涉及到的新興技術(shù)有:

·fastDFS(分布式文件系統(tǒng))

·Golang(Google推出的開發(fā)編程語言)

·Docker(虛擬化容器技術(shù))

·Go-micro(Go語言微服務(wù)框架)

·Beego(Go語言高性能web服務(wù)器框架)

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

·ASN.1(跨平臺(tái)安全傳輸協(xié)議)

·RPC(遠(yuǎn)程調(diào)用過程)

·Oracle(高級(jí)事務(wù)關(guān)系型數(shù)據(jù)庫)

涉及到的網(wǎng)絡(luò)攻防技術(shù)有:

·Kali Linux(Hacker操作系統(tǒng))

·Wireshark(網(wǎng)絡(luò)抓包分析工具)

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

·AppScan(漏洞掃描工具)

·DDos(分布式拒絕服務(wù)攻擊)

·Web滲透(Web頁面代碼的攻擊形式)

·iptables(Linux內(nèi)核防火墻技術(shù))

·NetCat(網(wǎng)絡(luò)攻擊瑞士軍刀)

·TCPDump(Linux內(nèi)核網(wǎng)絡(luò)協(xié)議捕捉器)

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


本文版權(quán)歸黑馬程序員C/C++與網(wǎng)絡(luò)攻防學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!


作者:黑馬程序員C/C++與網(wǎng)絡(luò)攻防學(xué)院


首發(fā):http://c.itheima.com/


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!