cmd里的恶意代码
最近在stephenjy的启发下开始研究cmd和Windows Powershell。突然发现其实写一个cmd恶意脚本很简单…假如这个脚本叫做a.cmd,那么只要
1 start a.cmd
2 start a.cmd
就好了。这个进程就会以几何级数自我复制,扩张,运行。。。当然如果加入一些耗费资源的命令更好。
为了在自己的机器上测试这个脚本的破坏力,必须要加一些限制条件…或者说,如何控制代码比写出破坏性的代码更重要,就像相比于核弹,核电站对人类发展更有意义一样。要想实现这一点,可以这样:
1 @set /a num = %1 + 1
2 @if /i %num% leq 5 start a.cmd %num%
3 @if /i %num% leq 5 start a.cmd %num%
4 @ping www.baidu.com
5 @exit
这样当a.cmd第一次运行的时候,就会调用两次自身,并以2为参数。以后每当a.cmd被调用时,就会把参数加1,并以此为参数创建新的进程。当参数到达某一给定值n(此处为5)时就会自动结束。这样就可以把同时运行的cmd进程数控制在(2 ^ n – 1)以内。
这个以ping为负载的恶意代码效果怎样呢?当n设置为6时,可以看到这样的代码主要通过频繁的新建进程对CPU产生了沉重的负荷,但对网络,磁盘和内存影响并不是太大。
上面这个图是通过可靠性和性能监视器得到的,这个也可以作为评估代码破坏力的一种方法。方便以后调试。
在实验过程中,还无意发现怎么ping baidu的结果有点诡异啊。。。
还有cnBlogs对代码着色的支持真好呀...连BatchFile和Powershell都有...