木马远程控制技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中继技术又可以分为:
半反弹端口技术 全反弹端口技术
远程控制连接技术
半反弹端口技术
木马客户端将连接命令和自己的 IP地址及监听端口上传到一个第
三方的服务器。木马服务器端启动后会定时查看代理服务器上有没有
指令信息。当木马服务器端接收到连接命令时,主动向代理服务器上 保存的IP地址和端口信息发送连接请求。木马客户端回复连接请求, 连接建立,进行通信。
首先重新得到屏幕位图的句柄,调用函数 GetObject() 获得位
图属性,函数原形如下。
int GetObject(
HGDIOBJ hgdiobj, //图形对象句柄
int cbBuffer, //为图形对象信息分配的缓冲区大小
LPVOID lpvObject //指向图形对象信息 );
远程桌面
木马客户端上传指令后也定时到代理服务器上查看有没有结果反 馈,这样就可以获得木马服务器端的执行结果。
在这种连接方式中,木马客户端和服务器端没有进行实质性的连 接,而是通过代理服务器进行间接通信。
远程控制连接技术
全反弹端口连接如下图所示:
1 4
2
代理服务器
3
木马客户端
1 上传指令 4 2 接收指令 3
1 2 3
木马客户端
1 请求连接 2 同意连接 3
木马服务器端
连接建立,进行通信
远程控制连接技术
在反弹端口连接中,木马服务器向木马客户端发送连接请求, 木马客户端在监听端口收到请求并做出响应,这时就建立连接 。 虽然反弹端口连接可以解决防火墙对正向连接的限制,但是木 马服务器必须携带木马客户端的IP地址和监听端口的信息,因
WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits;
远程桌面
位图信息头包含与设备无关位图(DIB)的大小和颜色格式等信息 ,由结构体BITMAPINFOGEADER来描述。
typedef struct tagBITMAPINFOHEADER { DWORD biSize; //该结构体的大小,以字节为单位 LONG biWidth; //位图文件的宽度,以象素为单位 LONG biHeight; //位图文件的高度,以象素为单位 WORD biPlanes; //目标设备的平面数,必须置为1 WORD biBitCount // 每个象素所占的比特数,该值也决定了位图 //文件的最多能使用的颜色数。只能取1、2、4、8、16、24、32其中之一 DWORD biCompression; //压缩类型 DWORD biSizeImage; //图像大小,以字节为单位 LONG biXPelsPerMeter; //图像的水平分辨率,以目标设备每米象素数为单位 LONG biYPelsPerMeter; //图像的垂直分辨率,以目标设备每米象素数为单位 DWORD biClrUsed; //调色板中图像实际使用的颜色数 DWORD biClrImportant; //对于图像显示来说是重要的颜色索引值 } BITMAPINFOHEADER;
1
代理服务器
3 4
2
木马客户端
1 4 上传连接指令 2 取回连接指令 3
木马服务器端
请求连接
回复请求,连接建立,进行通信
远程控制连接技术
全反弹端口技术
木马客户端将对服务器端的指令信息(获取信息的指令、破坏指 令等,这里不需要连接指令)上传到代理服务器;
木马服务器端仍然是定时到代理服务器端查看有无指令,等到它 接收到客户端上传的指令后,解析指令并执行,将执行结果上传 到代理服务器;
最主要的,防火墙会对进入主动连接局域网内主机的网络流量进 行封锁,所以正向连接并不是木马连接技术的最佳选择。
远程控制连接技术
反弹技术
反弹端口型木马的服务器端会主动连接木马客户端,这样,即使 服务器端处于防火墙后的局域网内部,也可以实现远程控制,解决了 正向连接不能应用于装有防火墙和局域网内部的远程主机的难题。
木马服务器端
执行指令后返回执行结果
取回指令执行结果
远程控制技术
远程控制连接技术 远程桌面 远程文件管理
远程键盘鼠标控制
远程关机
远程桌面
远程桌面的获取和显示可以分为五个步骤:
1、木马服务器端获取屏幕位图 2、位图解压缩
3、位图压缩
4、木马客户端接收位图 5、显示位图
远程桌面
位图文件结构
文件头 位图信息头 色彩表 位图阵列
位图文件存储在文件中,也可以存储在内存中。如果要存储在内存
中,我们就不用理会文件头,而只需填充位图信息头、色彩表和位 图阵列。
远程桌面
首先调用 CreateCompatibleDC() 创建一个与现有窗口的设备 上下文(DC)相兼容的内存设备上下文。函数原形如下。
HDC CreateCompatibleDC( HDC hdc //要创建兼容DC的DC句柄 );
位图文件结构
远程桌面
文件头含有位图文件的类型、大小、数据结构等信息,由结构体 BITMAPFILEHEADER来描述。
typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; //位图文件的类型,必须为BM(0x4D42) //位图文件的大小,以字节为单位 //保留,设为0 //保留,设为0 // 位图阵列相对于位图文件头的偏移量, //以字节为单位 } BITMAPFILEHEADER;
此木马客户端必须有公网IP地址(或者与木马服务器处于同一
个局域网),并且IP地址不能是动态的。
远程控制连接技术
中继技术
中继技术是反弹端口技术的一种变体,它仍然属于反弹端口技术, 只是在连接过程中增加了代理服务器作为客户端和服务器端连接的跳 板,使得木马服务器端不用再携带客户端的地址、端口等指令信息, 不仅增加了客户端对服务器端控制的灵活性,也增加了客户端的隐蔽 性。
远程桌面
接下来,创建一个屏幕 DC的位图,然后将该位图选入内存设备上下
文中。这两个函数分别为CreateCompatibleBitmap()和SelectObject()。
HBITMAP CreateCompatibleBitmap( HDC hdc, //要创建位图的DC句柄
int nWidth,
远程控制技术
远程控制连接技术 远程桌面 远程文件管理
远程键盘鼠标控制
远程关机
远程控制连接技术
按照木马客户端和服务器端在远程控制连接过程中的主动性和 所扮演的角色,我们将连接技术分为:
正向连接 反向连接 中继技术
远程控制连接技术
正向连接
木马服务器端初始化后在特定端口进行监听;木马客户端向服务器 端发送连接请求;木马服务器端监听到连接请求并回复,建立连接, 进行通信。
0 2
2 2
1 2
1 2
2 2
3 2
2 1
1 3
2 1
1 3
1 2
1 3
1 3
1 1
1 0
1 1
2 0
3 1
3 0
3 1
3 0
0 1
3 0
0 3
3 0
0 0
3 0
0 0
3 0
2 3
3 3
3 2
远程桌面
位图信息结构 BITMAPINFO 定义了一个 DIB 的大小和颜 色,包含了上述的位图信息头和色彩表两部分。结构体 的定义如下。
计算机病毒原理与防治
北京邮电大学信息安全中心 郑康锋
zhengkfbupt@163.com ftp://virus:virus@unisec.isc.edu.cn 62283190-601
本次课程学习目标
学习完本次课程,您应该能够了解:
远程控制连接技术 远程桌面 远程文件管理 远程键盘鼠标控制 远程关机
BOOL BitBlt(
HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, //目标DC句柄 //目标区域左上角的x坐标 //目标区域左上角的y坐标 //目标区域的宽度 //目标区域的高度 //源DC句柄
} RGBQUAD;
远程桌面
色彩表的表项个数由 BITMAPINFOHEADER结构中的biBitCount项 决定。
当 biBitCount 为 1 、 4 或者 8 时,色彩表有 2N 个表项,即分别有 2 、 16 或者 256 个表项。如果某点的象素值为 n ,则该象素的颜色为色彩表 第n项所定义的颜色。
对位图信息头进行初始化,获得位图信息头和色彩表,以及位
int nHeight );
//位图的宽度,以象素为单位
//位图的高度,以象素为单位
HGDIOBJ SelectObject( HDC hdc, HGDIOBJ hgdiobj ); // DC句柄 //要选入的对象句柄
远程桌面
一 切 就 绪 后 , 就 可 以 获 取 图 像 了 。 BitBlt() 函 数 完 成 图 像 的 捕 获 。 CreateCompatibleBitmap() 返回的位图对象只包含相应设备上下文中位图 的位图信息头,不包含色彩表和位图阵列。因此,选入该位图对象的设备 上下文不能像选入普通位图对象的设备上下文一样应用,必须在 SelectObject()函数之后,调用BitBlt()将原始设备描述表的色彩表和位图阵 列拷贝到兼容设备描述表。
远程桌面
biBitCount=2时,色彩表中包含4种颜色,如下表所示:
索引号 蓝色分量 绿色分量 红色分量
0
1 2 3
255
0 128 255
0
255 255 128
0
255 128 128
一个位图数据阵列如下所示。其中,位图阵列中的每个象素占 2个比特,数据对应色彩表中的索引号。例如,第二行第八列的数 值为0,表示该象素的颜色为蓝色
1 2 3
木马客户端
1 请求连接 2 同意连接 3
木马服务器端
连接建立,进行通信
远程控制连接技术
正向连接技术是第一、第二代木马所采用的技术,例如冰河、 广外女生等。
这种连接需要木马服务器端开放端口等待连接,并且木马客户端 要知道服务器端的IP地址和开放的端口号。
容易暴露木马的行踪,而且如果木马服务器端使用动态 IP地址, 或者处于局域网内,就很难实现连接。
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; //位图信息头结构 //RGBQUAD结构数组
} BITMAPINFO, *PBITMAPINFO;
远程桌面
获取屏幕位图
屏幕实质上也是一个特殊的窗口,也可以获得窗口句柄。有了 窗口句柄,就可以获得窗口所对应的位图图像了。我们可以将一个
远程桌面
色彩表定义了一个颜色表,用于说明图像中的颜色。每一种颜色都 可由红、绿、蓝三个基色按照不同的分量混合而成,这种混合比例 由 一 个 结 构 体 RGBQUAD 来 描 述 。 因 此 , 色 彩 表 是 由 若 干 个 RGBQUAD组成的表
typedef struct tagRGBQUAD { BYTE BYTE BYTE BYTE rgbBlue; rgbGreen; rgbRed; rgbReserved; //蓝色的分量 //绿色的分量 //红色的分量 //保留,设为0
当 biBitCount=24 时, BITMAPINFO 结构中的 bmiColors 项为 NULL , 即色彩表表项为空。位图阵列每3个字节表示一个象素,分别定义了
蓝、绿、红的分量。
biBitCount为16或32时,情况比较复杂,并不常用。
远程桌面
位图阵列存放的是位图的所有象素值,它的存储是从左到右从下到 上进行的,也就是说,从图像的左下角开始扫描图像,从左到右、 从下到上,把图像的象素值记录下来,生成位图阵列。位图阵列数 据分有压缩和非压缩两种。在非压缩格式中,位图中每一个点象素 值对应于位图阵列的若干位,其大小由图像的宽度( biWidth )、 高度(biHeight)和象素所占比特数(biBitCount)决定。
int nXSrc,
int nYSrc, );
//源区域左上角的x坐标
//源区域左上角的y坐标
DWORD dwRop //光栅操作代码
远程桌面
完成以上操作后,屏幕图像就已经存储在内存中了。但是,位
ห้องสมุดไป่ตู้
图句柄本身是不包含位图信息头和位图象素数据阵列的。我们要显
示这个位图,甚至是先进行主机之间的传输后再显示,就需要进一 步获取位图句柄所对应的位图的信息头和位图阵列。