分類
Information Security

Windows/Linux入侵手工排查

本文內容來自於公眾號“FreeBuf”、“Bypass”和其他一些分散內容,著重對幾家內容進行了整合,對這個主題做一個按圖索驥的備查,以防到現場時腦中一片空白。總結得很全面,應該能應付現場的場景了。

一、Windows排查

01、檢查系統賬號

(1)檢查遠程管理端口是否對公網開放,服務器是否存在弱口令。

  • 檢查方法:檢查防火牆映射規則,獲取服務器賬號登錄,也可據實際情況諮詢相關管理員。

(2)查看服務器是否存在可疑賬號、新增賬號。

  • 檢查方法:打開cmd 窗口,輸入lusrmgr.msc命令,查看是否有新增/可疑的賬號,如有管理員群組的(Administrators)裡的新增賬戶,根據實際應用情況,保留或刪除。

(3)查看服務器是否存在隱藏賬號、克隆賬號。

  • 檢查隱藏賬號方法:CMD命令行使用”net user”,看不到”test$”這個賬號,但在控制面板和本地用戶和組是可以顯示此用戶的。
  • 檢查克隆賬號方法:打開註冊表,查看管理員對應鍵值。
  • 使用D盾_web查殺工具,集成了對克隆賬號檢測的功能。
圖片

(4)結合Windows安全日誌,查看管理員登錄時間、用戶名是否存在異常。

  • 檢查方法:Win+R打開運行,輸入“eventvwr.msc”,回車運行,打開“事件查看器”。或者我們可以導出Windows日誌—安全,利用Log Parser進行分析。

02、檢查異常端口

(1)檢查端口連接情況

  • 檢查方法:a、netstat -ano 查看目前的網絡連接,定位可疑的ESTABLISHEDb、根據netstat 定位出的pid,再通過tasklist命令進行進程定位tasklist | findstr “PID”
图片
  • 檢查方法檢查是否存在可疑的網絡連接,如發現異常,可使用Wireshark網絡抓包輔助分析。

03、檢查異常進程

(1)檢查是否存在可疑的進程

  • 檢查方法:a、開始—運行—輸入msinfo32,依次點擊“軟件環境→正在運行任務”就可以查看到進程的詳細信息,比如進程路徑、進程ID、文件創建日期、啟動時間等。b、打開D盾_web查殺工具,進程查看,關注沒有簽名信息的進程。c、通過微軟官方提供的Process Explorer 等工具進行排查。d、查看可疑的進程及其子進程。可以通過觀察以下內容:
    没有签名验证信息的进程没有描述信息的进程进程的属主进程的路径是否合法      CPU或内存资源占用长时间过高的进程

(2)如何找到進程對應的程序位置

        任務管理器—選擇對應進程—右鍵打開文件位置

        運行輸入wmic,cmd界面輸入process

04、檢查啟動項

(1)檢查服務器是否有異常的啟動項。

  • 檢查方法:a、登錄服務器,單擊【開始】>【所有程序】>【啟動】,默認情況下此目錄在是一個空目錄,確認是否有非業務程序在該目錄下。b、單擊開始菜單>【運行】,輸入msconfig,查看是否存在命名異常的啟動項目,是則取消勾選命名異常的啟動項目,並到命令中顯示的路徑刪除文件。c、單擊【開始】>【運行】,輸入regedit,打開註冊表,查看開機啟動項是否正常,特別注意如下三個註冊表項:
    HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce檢查右側是否有啟動異常的項目,如有請刪除,並建議安裝殺毒軟件進行病毒查殺,清除殘留病毒或木馬。d、利用安全軟件查看啟動項、開機時間管理等。e、組策略,運行gpedit.msc。

05、檢查計劃任務

(1)檢查計劃任務裡是否有可疑的腳本執行

  • 檢查方法:a、單擊【開始】>【設置】>【控制面板】>【任務計劃】,查看計劃任務屬性,便可以發現木馬文件的路徑。b、單擊【開始】>【運行】;輸入cmd,然後輸入at,檢查計算機與網絡上的其它計算機之間的會話或計劃任務,如有,則確認是否為正常連接。
图片

06、檢查服務

(1)檢查系統服務名稱、描述和路徑,確認是否異常

  • 檢查方法:單擊【開始】>【運行】,輸入services.msc,注意服務狀態和啟動類型,檢查是否有異常服務。
图片

07、檢查可疑文件

(1)檢查新建文件、最近訪問文件和相關下載目錄等

  • 檢查方法:a、 查看用戶目錄,新建賬號會在這個目錄生成一個用戶目錄,查看是否有新建用戶目錄。
    Window 2003 C:\Documents and SettingsWindow 2008R2 C:\Users\b、單擊【開始】>【運行】,輸入%UserProfile%\Recent,分析最近打開分析可疑文件。c、在服務器各個目錄,可根據文件夾內文件列表時間進行排序,查找可疑文件。d、回收站、瀏覽器下載目錄、瀏覽器歷史記錄e、修改時間在創建時間之前的為可疑文件

(2)發現一個WEBSHELL或遠控木馬的創建時間,如何找出同一時間範圍內創建的文件?

  • 檢查方法:a、利用Registry Workshop 註冊表編輯器的搜索功能,可以找到最後寫入時間區間的文件。b、利用計算機自帶文件搜索功能,指定修改時間進行搜索。

08、檢查系統日誌

(1)檢查系統安全日誌

一般來說,可以通過檢查Windows安全日誌來獲悉賬號登錄情況,比如成功/失敗的次數。

LogParser.exe  -i:EVT –o:DATAGRID "SELECT  EXTRACT_TOKEN(Strings,10,'|')  as EventType, EXTRACT_TOKEN(Strings,5,'|')  as user, count(EXTRACT_TOKEN(Strings,19,'|')) as Times,EXTRACT_TOKEN(Strings,19,'|')  as LoginIp FROM F:\security.evtx where EventID=4625 GROUP BY Strings"图片

(2)歷史命令記錄

高版本Powershell會記錄PowerShell的命令,所有的PowerShell命令將會保存在固定位置:

%appdata%\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

查看PowerShell歷史記錄:

Get-Content (Get-PSReadlineOption).HistorySavePath

默認Powershell v5支持,Powershell v3和Powershell v4,需要安裝Get-PSReadlineOption後才可以使用。

二、Linux入侵排查

01、檢查系統賬號

從攻擊者的角度來說,入侵者在入侵成功後,往往會留下後門以便再次訪問被入侵的系統,而創建系統賬號是一種比較常見的後門方式。在做入侵排查的時候,用戶配置文件/etc/passwd和密碼配置文件/etc/shadow是需要去重點關注的地方。

(1)查詢特權用戶特權用戶(uid 為0)

awk -F: '$3==0{print $1}' /etc/passwd

(2)查詢可以遠程登錄的帳號信息

awk '/\$1|\$6/{print $1}' /etc/shadow

(3)除root帳號外,其他帳號是否存在sudo權限。如非管理需要,普通帳號應刪除sudo權限

more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

(4)禁用或刪除多餘及可疑的帳號

usermod -L user    禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头userdel user       删除user用户userdel -r user    将删除user用户,并且将/home目录下的user目录一并删除

(5)當前登錄當前系統的用戶信息

who     查看当前登录用户(tty本地登陆  pts远程登录)w       查看系统信息,想知道某一时刻用户的行为uptime  查看登陆多久、多少用户,负载

02、檢查異常端口

(1)使用netstat 網絡連接命令,分析可疑端口、IP、PID等信息。

netstat -antlp|more

(2)如發現異常的網絡連接需要持續觀察,可抓包分析

tcpdump -c 10 -q   //精简模式显示 10个包

03、檢查可疑進程

(1)使用ps命令列出系統中當前運行的那些進程,分析異常的進程名、PID,可疑的命令行等。

ps aux / ps -ef

(2)通過top命令顯示系統中各個進程的資源佔用狀況,如發現資源佔用過高

top

(3)如發現異常,可使用一下命令進一步排查:

查看该进程启动的完整命令行: ps eho command -p $PID查看该进程启动时候所在的目录: readlink /proc/$PID/cwd查看下pid所对应的进程文件路径:ls -l /proc/$PID/exe查看该进程启动时的完整环境变量: strings -f /proc/1461/environ | cut -f2 -d ''列出该进程所打开的所有文件: lsof -p $PID

04、檢查系統服務

Linux系統服務管理,CentOS7使用systemd控制 CentOS6之前使用chkconfig控制。

(1)對於systemd服務管理器來說,可以通過下述方式查看開機自啟的服務:

systemctl list-unit-files --type=service | grep "enabled"

(2)chkconfig就是CentOS6以前用來控制系統服務的工具,查看服務自啟動狀態:

chkconfig  --list  chkconfig --list | grep "3:on\|5:on"

05、檢查開機啟動項

(1)檢查啟動項腳本

more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/

(2)例子:當我們需要開機啟動自己的腳本時,只需要將可執行腳本丟在/etc/init.d目錄下,然後在/etc/rc.d/rc*.d中建立軟鏈接即可

ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此處sshd是具體服務的腳本文件,S100ssh是其軟鏈接,S開頭代表加載時自啟動;如果是K開頭的腳本文件,代表運行級別加載時需要關閉的。

06、檢查計劃任務

利用計劃任務進行權限維持,可作為一種持久性機制被入侵者利用。檢查異常的計劃任務,需要重點關注以下目錄中是否存在惡意腳本。

/var/spool/cron/* /etc/crontab/etc/cron.d/*/etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/*/etc/cron.weekly//etc/anacrontab/var/spool/anacron/*

07、檢查異常文件

1、查看敏感目錄,如/tmp目錄下的文件,同時注意隱藏文件夾,以“..”為名的文件夾具有隱藏屬性

2、得到發現WEBSHELL、遠控木馬的創建時間,如何找出同一時間範圍內創建的文件?

可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件

3、針對可疑文件可以使用stat進行創建修改時間。

4、可能會被替換的命令為:ps、netstat、lsof、ss等常用命令,這些命令一般會被黑客放在/usr/bin/dpkg目錄下。如果我們發現存在此目錄,基本上可以斷定係統被入侵了。

08、檢查歷史命令

一般而言,入侵者獲取shell之後,會執行一些系統命令從而在主機上留下痕跡,我們可以通過history命令查詢shell命令的執行歷史。

(1)查詢某個用戶在系統上執行了什麼命令

使用root用户登录系统,检查/home目录下的用户主目录的.bash_history文件

(2)默認情況下,系統可以保存1000條的歷史命令,並不記錄命令執行的時間,根據需要進行安全加固。

a)保存1万条命令sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profileb)在/etc/profile的文件尾部添加如下行数配置信息:######jiagu history xianshi#########USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fiexport HISTTIMEFORMAT="%F %T $USER_IP `whoami` "shopt -s histappendexport PROMPT_COMMAND="history -a"######### jiagu history xianshi ##########c)source /etc/profile让配置生效

09、檢查系統日誌

在Linux上一般跟系統相關的日誌默認都會放到/var/log下面,若是一旦出現問題,用戶就可以通過查看日誌來迅速定位,及時解決問題。常用日誌文件如下:

/var/log/btmp:记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看。/var/log/lastlog:记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看。/var/log/wtmp:永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看。/var/log/utmp:记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询。/var/log/secure:记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

一般,我們需要重點去關注secure安全日誌,檢查系統錯誤登陸日誌,統計IP重試次數,成功登錄的時間、用戶名和ip,確認賬號是否存在暴力破解或異常登錄的情況。

1、定位有多少IP在爆破主机的root帐号:grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些IP在爆破:grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么? grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
2、登录成功的IP有哪些:grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP:grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
3、增加一个用户kali日志:Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali, shell=/bin/bashJul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali#grep "useradd" /var/log/secure
4、删除用户kali日志:Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'# grep "userdel" /var/log/secure
5、su切换用户:Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)sudo授权执行:sudo -lJul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

三、常見Webshell查殺工具

D盾:

http://www.d99net.net

百度WEBDIR+

https://scanner.baidu.com

河馬

https://www.shellpub.com

Web Shell Detector

http://www.shelldetector.com

CloudWalker(牧雲)

https://webshellchop.chaitin.cn
深度学习模型检测PHP Webshell
http://webshell.cdxy.me

PHP Malware Finder

https://github.com/jvoisin/php-malware-finder

findWebshell

https://github.com/he1m4n6a/findWebshell

在線Webshell查殺工具

http://tools.bugscaner.com/killwebshell

四、如何發現隱藏的Webshell後門

那麼多代碼裡不可能我們一點點去找後門,另外,即使最好的Webshell查殺軟件也不可能完全檢測出來所有的後門,這個時候我們可以通過檢測文件的完整性來尋找代碼中隱藏的後門。

文件MD5校驗

絕大部分軟件,我們下載時都會有MD5文件,這個文件就是軟件開發者通過md5算法計算出該如軟件的“特徵值”,下載下來後,我們可以對比md5的值,如果一樣則表明這個軟件是安全的,如果不一樣則反之。

Linux中有一個命令:md5sum可以查看文件的md5值,同理,Windows也有命令或者工具可以查看文件的md5值

图片

Diff命令

Linux中的命令,可以查看两个文本文件的差异

文件對比工具

Beyond Compare
WinMerge

五、勒索病毒

勒索病毒搜索引擎

360:http://lesuobingdu.360.cn
腾讯:https://guanjia.qq.com/pr/ls
启明:https://lesuo.venuseye.com.cn
奇安信:https://lesuobingdu.qianxin.com
深信服:https://edr.sangfor.com.cn/#/information/ransom_search

勒索軟件解密工具集

腾讯哈勃:https://habo.qq.com/tool
金山毒霸:http://www.duba.net/dbt/wannacry.html
火绒:http://bbs.huorong.cn/forum-55-1.html
瑞星:http://it.rising.com.cn/fanglesuo/index.html
Nomoreransom:https://www.nomoreransom.org/zh/index.html
MalwareHunterTeam:https://id-ransomware.malwarehunterteam.com
卡巴斯基:https://noransom.kaspersky.com
Avast:https://www.avast.com/zh-cn/ransomware-decryption-tools
Emsisoft:https://www.emsisoft.com/ransomware-decryption-tools/free-download
Github勒索病毒解密工具收集汇总:https://github.com/jiansiting/Decryption-Tools

六、公眾號內以往介紹的文章工具

1、《工具:Windows安全檢查SeatBelt

2、《工具:Linux安全檢查GScan

資料來源:https://mp.weixin.qq.com/s/7zleF-HWBmN5IHFOsn8HWA

作者: stevencho

從事資訊工作二十多年,對資安極具熱情,在 Network Security, Endpoint Security, 及 Mobile Security 等資安領域有超過十年以 上的經驗。曾任職精誠資訊資安產品代理部門技術經理,負責 資安產品之技術支援與大型企業導入專案。此外,他也取得了 ISO 27001 主導稽核員證書及 Check Point 的 CCSA 與 CCSE 等防 火牆產品的專業證照。