CTF实战23 木马攻击技术

什么是特洛伊木马

特诺伊木马概述

历史上

特洛伊木马是木马屠城记里,希腊军队在特洛伊战争中,用来攻破特洛伊城的那只大木马

值得注意的是,木马屠城记并非于古希腊诗人荷马的两部著作伊利亚特与奥德赛里记载,而是在罗马帝国时期的诗人维吉尔所写的史诗《埃涅阿斯纪》中, 才第一次被记载

木马屠城记一直被现代科学人视为神话故事,直至十九世纪时,业余考古学者海因里希·施利曼(Heinrich Schliemann)才证实特洛伊城的遗址

回到现在

电脑中特洛伊木马(Trojan Horse),其功能和几千年前的特洛伊木马是相似的

其来源于希腊神话特洛伊战争的特洛伊木马

攻城的希腊联军佯装撤退后留下一只木马,特洛伊人将其当作战利品带回城内

当特洛伊人为胜利而庆祝时,从木马中出来了一队希腊兵,它们悄悄打开城门,放进了城外的军队,最终攻克了特洛伊城

计算机中所说的木马,其特征与特洛伊木马一样具有伪装性,表面上没有危害、甚至还附有用户需要的功能,却会在用户不经意间,对用户的计算机系统产生破坏或窃取数据,特别是用户的各种账户及口令等重要且需要保密的信息,甚至控制用户的计算机系统

是黑客用来盗取其他用户的个人信息,甚至是远程控制对方的计算机而加壳制作,然后通过各种手段传播或者骗取目标用户执行该程序,以达到盗取密码等各种数据资料等目的

病毒和木马的区别

与病毒相似,木马程序有很强的隐秘性,随操作系统启动而启动

特洛伊木马(简称木马)是恶意软件执行意外或未经授权的恶意的行为 木马和病毒之间的主要区别是无法复制

木马造成损害的系统,降低系统的安全性,但不复制

如果它复制,那么它应该被归类为病毒

木马的结构

一般的,木马是由传统的C&S架构组成的,其一般由

  • 配置木马程序
  • 控制木马程序
  • 木马自身程序

三部分组成

木马网路入侵的方法

第一步、黑客制作和测试完成木马程序之后,将其上传到服务器

第二步、用户通过各种诱骗手段诱使其从服务器上下载并安装木马程序在自己电脑上

第三步、木马开始运行之后反馈信息给控制端

第四步、控制端开始和木马运行的受害者电脑建立连接

第五步、黑客开始访问受害者的电脑资源

木马的传播方式

木马常用的传播方式,有以下几种:

  • 以邮件附件的形式传播
  • 通过OICQ、QQ等聊天工具软件传播
  • 通过提供软件下载的网站(Web/FTP/BBS)传播
  • 通过一般的病毒和蠕虫传播
  • 通过带木马的磁盘和光盘进行传播

控制端将木马伪装之后添加到附件中,发送给收件人

或者在进行聊天时,利用文件传送功能发送伪装过的木马程序给对方

木马程序一般非常小,只有是几K到几十K,如果把木马捆绑到其它正常文件上,用户是很难发现的

所以,有一些网站被人利用,提供的下载软件往往捆绑了木马文件,在用户执行这些下载的文件的同时,也运行了木马

木马的特性

  • 隐蔽性
  • 非授权性
  • 欺骗性
  • 自动运行性
  • 自动恢复性
  • 主动性
  • 功能的特殊性

木马的分类

1. 按网络连接方式分类

按照网络连接方式分,我们可以分为两类

  • 正向连接型
  • 反向连接型

正向连接的这类木马的通信是由控制端发起的,早期的木马多属于这种类型,缺点就是这类木马不能绕过防火强对服务端发起连接请求

而反向型的这类木马的通信是由木马服务端(运行了木马的PC)发起的,现在的木马多属于这种类型

这是因为防火墙对进入计算机的数据会严查,流出计算机的数据却很少检查

2. 按功能分类

按照这种分类方法,我们可以把木马分为以下几种:

  • 键盘记录型( Keyloggers )
  • DoS攻击型( Denial of Service )
  • 释放型( Droppers)
  • 下载型(Downloaders)
  • 后门型(Backdoors)

木马的启动方式

木马常用的启动方式有以下几种

  • 集成(捆绑)到应用程序中
  • 隐藏在应用程序的启动配置文件中
  • 伪装(感染)在普通文件中
  • 内置到注册表中
  • 隐形于启动组中
  • 修改文件关联
  • 修改运行可执行文件的方式
  • 设置在超级链接中

木马的常见技术

1. hook技术

hook是一种通过更改程序的代码、数据结构,改变程序运行路线的技术

很多木马隐藏自己的技术都是通过hook来实现的

hook技术一般分为2种:

用户模式

包括 IAT hook、 EAT hook、Dll 注入等

内核模式

包括 SSDT hook、IDT hook、SYSENTER hook 、IRP Hook、Object Hook等

2. Dll注入

所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分,这样,当这个程序运行的时候,木马也就一起运行了

要实现DLL注入,首先需要打开目标进程

注入的方式:

  • 通过注册表注入
  • 利用消息钩子
  • 利用远程线程注入

木马常利用微软操作系统的注册表项:

HKLM\Software\Microsoft\Windows NT\ CurrentVersion\Windows \AppInit_Dlls

由于该项的键值会被GUI程序自动加载,只要程序调用 User32.dll,在进入函数 DllMain 的初始化阶段时,该项下的 dll 文件会被自动加载

3. 消息钩子

Windows内部提供了SetWindowsHook、 SetWindowsHookEx来设置消息钩子

它们的第一个参数idHook用来标识设置消息类型、HOOKPROC是自定义的处理过程

常见参数:

获取鼠标消息

WH_MOUSE

获取键盘消息

WH_KEYBOARD

4. 远程线程注入

使用OpenProcess打开试图嵌入的进程

因为需要写入远程进程的内存地址空间,所以必须申请足够的权限,包括远程创建线程、远程VM操作、远程VM写权限

之后就是为LoadLibraryW函数线程启动DLL木马准备参数

LoadLibraryW函数是在kernel32.dll中定义的一个功能函数,用于加载DLL文件,它只有一个参数,就是DLL文件的绝对路径名(也就是木马DLL文件的全路径文件名)

由于木马DLL是在远程进程内调用的,所以还需要将这个文件名复制到远程地址空间

计算LoadLibraryW的入口地址,启动远程线程LoadLibraryW,通过远程线程调用木马DLL

5. 木马的秘密信道技术

利用ICMP协议建立秘密通道

ICMP回显请求(type=0)和回显应答(type=8)报文

规范约定ICMP报文中的标识符和序列号字段由发送端任意选择,因此在ICMP包中标识符、序列号和选项数据等部分都可用来秘密携带信息

由于防火墙、入侵检测系统等网络设备通常只检查ICMP报文的首部,因此使用ICMP建立秘密通道时往往直接把数据放到选项数据中

这类秘密信道可以实现直接的客户端和服务端通信,具有准实时的特点

利用HTTP协议建立秘密通道

利用反弹端口型木马的逆向连接技术建立木马连接,其中有两种类型

合并端口法

使用特殊的手段,在一个端口上同时绑定两个TCP或者UDP连接,通过把木马端口绑定于特定的服务端口之上,比如HTTP的80端口,使得其秘密通信对防火墙更具迷惑性,从而降低秘密通信流量被发现的风险

使用报文伪装技术建立秘密信道

将数据插入到HTTP协议报文的一些无用的段内,然后利用建立TCP连接的三次握手规则进行秘密通信

这需要木马要直接替换程序的HTTP发送程序的地址,替换成木马自己的恶意程序的地址

之后程序在调用HTTP发送程序的时候,其实调用的是木马的恶意程序,恶意程序在要发送的数据中加入自己的要通信的内容之后,又将数据交给了正在的HTTP发送程序

最后我们来说说木马的危害吧

木马的危害

  • 窃取数据
  • 接受非授权操作者的指令
  • 远程管理服务端进程
  • 篡改文件和数据
  • 删除文件和数据
  • 操纵注册表
  • 监视服务器的一切动作
  • 释放病毒
  • 使系统自毁

本文完

下期内容:二进制软件逆向分析基础

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2018-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏艾斯博客www.vpsss.net

使用服务器安全狗的效果

2895
来自专栏Ceph对象存储方案

RGW 服务端加密爬坑记

参考了官方文档,决定采用 Customer-Provided Keys(Amazon SSE-C)方式进行加密

2494
来自专栏FreeBuf

“奇幻熊”(APT28)组织最新攻击

近日腾讯御见威胁情报中心在监测Fancy Bear“奇幻熊”组织的攻击活动过程中,发现了其使用的最新攻击样本。下文将详细披露该组织的攻击手法,和各企业一起共同抵...

2768
来自专栏IT笔记

JAVA实现的支付宝扫描二维码支付

前期酝酿准备 最近项目中要上线支付功能、前段时间刚开发完微信的扫码支付、不得不说微信开发团队的文档真是一个烂。但总算是对照着API把功能交付上线了。 前几天公...

5066
来自专栏跟着阿笨一起玩NET

推荐+1置顶+1(分享、讨论、实现) 通用软件注册功能之建立有效的软件保护机制

         众所周知,一些共享软件往往提供给使用者的是一个功能不受限制的限时使用版,在试用期内使用者可以无限制的使用软件的全部功能(只是可能会出现提示使用...

1041
来自专栏FreeBuf

新型勒索病毒软件GruxEr来袭:深度分析如何传播、加密及如何删除

本文旨在帮助您清除Gruxer ransomware感染,并通过此ransomware病毒恢复AES加密文件。 据报道,GruxEr名称的ransomwar...

2886
来自专栏散尽浮华

Linux下防御DDOS攻击的操作梳理

DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请...

1.5K8
来自专栏技术博文

php 二维码生成类

<?php /** * BarcodeQR - Code QR Barcode Image Generator (PNG) * @package Barco...

4655
来自专栏Java帮帮-微信公众号-技术文章全总结

JAVA实现的支付宝扫描二维码支付

最近项目中要上线支付功能、前段时间刚开发完微信的扫码支付、不得不说微信开发团队的文档真是一个烂。但总算是对照着API把功能交付上线了。

8041
来自专栏mathor

HackingLab的一套渗透测试题

 Hackinglab是一个在线网络信息安全攻防平台,里面有很多题,我随便做里面一套题,算是这两天学渗透的一个总结,题目地址

6044

扫码关注云+社区

领取腾讯云代金券