本节所讲内容:
• at 定制单次执行的计划任务
• cron定制周期性计划任务
• 配置脚本实现周期性任务
• 实战:找出黑客定时执行的木马程序
计划任务:
at # 只能执行一次
语法:
at 时间
服务:atd 必须开启
[root@xuegod63 ~]# systemctl status atd
atd (pid 2206) is running…
例:
at 20:00
echo
date
> /tmp/date.txt #输入要执行的命令
^+d #按下Ctrl+D 结束
也可以这样写
at 20:00 2015-2-23
at now +10min
at查询:
[root@xuegod63 ~]# at -l
3 2015-02-03 20:55 a root
2 2015-02-23 20:00 a root
执行成功的at计划任务会在这个目录下成生一个可执行的脚本文件:
[root@xuegod63 ~]# ll /var/spool/at/*
-rwx—— 1 root root 3842 Feb 3 20:45 /var/spool/at/a00002016a5170
-rwx—— 1 root root 3842 Feb 3 20:45 /var/spool/at/a000030169e127
at任务删除:
atrm at序列号
[root@xuegod63 ~]# atrm 2
周期性计划任务:
配置文件:
[root@xuegod63 ~]# vim /etc/crontab
服务:
[root@xuegod63 ~]# systemctl status crond
crond (pid 2195) is running…
针对用户级别的计划任务:
对于root用户:
命令:
针对用户级别的计划任务:
对于root用户:
命令:
crontab –e 创建一个计划任务 edit
crontab –l 显示
crontab –r 删除计划任务
crontab –e #计划任务规范
分 时 日 月 周 谁做后面的事情(用户) 命令
每个取值范围:
分:0-59
小时:0-23
日:1-31
月:1-12
周:0-7 0 7 都是周日
例:
[root@xuegod63 ~]# crontab -e
57 20 * * * echo date
> /tmp/date.txt
[root@xuegod63 ~]# date
Tue Feb 3 20:57:11 CST 2015
[root@xuegod63 ~]# cat /tmp/date.txt
Tue Feb 3 20:57:01 CST 2015
例: 特殊写法:
9,18,22这几天的3点1分,开始执行备份脚本
1 3 9,18,22 * * /usr/bin/back.sh
每月9-18日,这几天,3:00执行
1 3 9-18 * * /usr/bin/back.sh
每5分钟,执行一次
/5 * * * /usr/bin/back.sh
使用root身份,给其它普通用户指定crontab:
语法:crontab -u USERNAME -e/-l/-r
• 实战:找出黑客定时执行的木马程序
使用普通用户写一个计划任务:
参数:-u 用户名
[root@xuegod63 ~]# crontab -u bin -e
no crontab for bin - using an empty one
crontab: installing new crontab
排查:
[root@xuegod63 ~]# crontab -u bin -l
1 * * * * echo aaaa
排查:所有用户的计划任务?
[root@xuegod63 ~]# ll /var/spool/cron/
total 8
-rw——- 1 root root 42 Nov 12 10:11 bin
-rw——- 1 root root 19 Nov 12 10:06 root
注:所有的计划任务,都会在/var/spool/cron/下产生对应的文件。
黑客:高级crontab ,篡改一个系统级别的计划任务
[root@xuegod63 bin]# ls /etc/cron #按两下tab键
cron.d/ cron.deny cron.monthly/ cron.weekly/
cron.daily/ cron.hourly/ crontab
注:
cron.d/ #系统级别的定时任务
cron.daily/ #系统每天要执行计划任务
cron.hourly/ #系统每小时要执行计划任务
cron.monthly/ #系统每月要执行计划任务
cron.weekly/ #系统每周要执行计划任务
例:添加系统级别的木马程序
[root@xuegod63 ~]# vim /etc/cron.daily/tmpwatch #在最后添加
测试执行:
[root@xuegod63 ~]# /etc/cron.daily/tmpwatch
aaaa
注:说明添加的木马成功了。
[root@xuegod63 ~]# find /etc/cron* #查看可以添加系统级别的计划任务
排查:
方法1:利用md5sum ,来检验文件的完整性
例:
语法:md5sum 文件
[root@xuegod63 ~]# md5sum /etc/cron.daily/tmpwatch
17856453d7325d7750309910aa64e5ca /etc/cron.daily/tmpwatch
[root@xuegod63 ~]#vim /etc/cron.daily/tmpwatch #在最后,添加一些内容
[root@xuegod63 ~]# md5sum /etc/cron.daily/tmpwatch #再次查看md5值不一样
6152bd26fc26d623eaf9dd551b9faed8 /etc/cron.daily/tmpwatch
测试:
[root@xuegod63 ~]# vim /etc/cron.daily/tmpwatch #在最后添加以下内容:
做对比:
做对比:
[root@xuegod63 ~]# find /etc/cron* -type f -exec md5sum {} \; >/usr/share/file_md5.v2
[root@xuegod63 ~]# diff /usr/share/file_md5.v1 /usr/share/file_md5.v2 #对比
6c6
< 6152bd26fc26d623eaf9dd551b9faed8 /etc/cron.daily/tmpwatch
a34bbcd2c63889ad2a1ab48d751dc974 /etc/cron.daily/tmpwatch
注:如果忘提前生成/usr/share/file_md5.v1?
找一台正常的机器,生成md5值数据库文件。复制到咱们服务器上,再对比。
总结:通过计划任务运行木马程序
1、普通计划任务: crontab
2、高级crontab ,篡改一个系统级别的计划任务
技巧2: 查看开机启动进程
黑客:开机启动脚本中添加
[root@xuegod63 ~]# vim /etc/rc.local #在文档中插入以下红色内容
echo aaaa
[root@xuegod63 ~]# /etc/rc.local #测试执行
aaaaa
[root@xuegod63 ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Dec 18 2012 /etc/rc.local -> rc.d/rc.local
排查:
[root@xuegod63 ~]# vim /etc/rc.local #这个脚本就是开机启动后,需要执行的一个脚本文件。
!/bin/sh
#
This script will be executed after all the other init scripts.
You can put your own initialization stuff in here if you don’t
want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
很多空行
echo aaaaa
注:#注一定要cat,不使用vim ,因为有的黑客会故意在rc.local中添加很多空白行,在中间或最后添加一个脚本。
排查:显示时,过滤掉空行
[root@xuegod63 ~]# grep -v ^/etc/rc.local # ^
/etc/rc.local # ^
#以空开头以空结尾行,就空行。 -v #表示取反,显示
!/bin/sh
#
This script will be executed after all the other init scripts.
You can put your own initialization stuff in here if you don’t
want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
echo aaaa
黑客:利用开机启动的服务器脚本来加载木马程序
把木马程序脚本写到已经存在的开机启动服务中,例如: httpd (apache web服务器启动脚本)
[root@xuegod63 ~]# ls /etc/init.d/ #这个目录下的脚本文件,都是可以开机启动的脚本文件
abrt-ccpp halt netstat rpcidmapd
[root@xuegod63 ~]# vim /etc/init.d/httpd # 在倒数第二行添加
测试:
[root@xuegod63 ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
aaaaa
更强的黑客:
自己写一个开机启动程序
总结:
at 定制单次执行的计划任务
cron定制周期性计划任务
配置脚本实现周期性任务
实战:找出黑客定时执行的木马程序
CD讲课风格: 1