网络攻击课件二进制代码分析
系统安全漏洞与恶意代码介绍
征
35
恶意代码分类
照恶意代码运行平台 按照恶意代码传播方式 按照恶意代码的工作机
制 按照恶意代码危害
罗伯特.莫里斯
1995年—首次发现macro virus
31
恶意代码发展
1996年—netcat的UNIX版发布(nc) 1998年—第一个Java virus(StrangeBrew) 1998年—netcat的Windows版发布(nc) 1998年—back orifice(BO)/CIH 1999年—melissa/worm(macrovirus by email) 1999年—back orifice(BO) for WIN2k 1999年—DOS/DDOS-Denial of Service TFT/
恶意代码的发展趋势?从传播速度上来看恶意代码爆发和传播速度越来越快?从攻击意图来看恶意代码的开发者越来越与业化其意图也从游戏炫耀与向为恶意牟利?从功能上来看恶意代码的分工越来越细?从实现技术来看恶意代码实现的关键技术丌断变化?从传播范围来看恶意代码呈现多平台传播的特征35恶意代码分类36?照恶意代码运行平台?按照恶意代码传播斱式?按照恶意代码的工作机制?按照恶意代码危害分类蠕虫病毒后门木马有害工具流氓软件风险程序其他恶意代码分类37?丌传染的依附型恶意代码?流氓软件逡辑炸弹恶意脚本?丌传染的独立型恶意代码?木马rootkit风险程序?传染的依附型恶意代码?传统的病毒cih等?传染的独立型恶意代码?蠕虫病毒?可以丌依附亍所谓的数组而独立存在
了解安全漏洞的静态与动态挖掘方法的基本原理 了解补丁分类及修复时应注意的问题
12
漏洞的发现
从人工发现阶段发展到了依靠自动分析工具辅助 的半自动化阶段
二进制代码级ROP攻击及检测研究
摘要随着计算机及网络的快速发展,计算机的安全问题越来越受到人们的重视。
面向返回的编程Return-oriented-progrming(ROP)攻击是一种典型攻击计算机的方式,它通过将动态链接库函数中的以ret结尾的短小指令链接起来实现攻击目的。
栈返回地址保护、地址空间布局随机化(Address Space Layout Randomization,ASLR)等防御机制在一定程度上增强了操作系统的安全。
因此如何绕过这些防御机制来实施ROP攻击以及如何对ROP攻击做出检测受到了研究者的广泛关注。
在本文中,对ROP攻击机理以及检测方法做了研究。
针对在实施ROP攻击时怎样绕过地址空间布局随机化以及栈不可执行这一问题,提出了一种绕过ASLR的ROP攻击;同时针对栈返回地址保护机制实施了函数指针ROP攻击。
通过对函数指针ROP攻击的分析,提出了fpdetect检测方案,提高了函数指针ROP攻击的准确率。
本文主的主要研究工作如下:(1)针对如何绕过ASLR保护的问题展开研究。
本文通过返回到_dl_runtime_resolve函数动态获取动态链接库函数地址实施绕过ASLR的ROP攻击。
(2)本文通过缓冲区溢出漏洞修改函数指针实施ROP攻击,绕过栈返回地址保护,成功实施了ROP攻击。
(3)提高了函数指针ROP攻击检测的准确率。
本文通过分析调用动态链接库函数的特点,将静态分析与动态检测技术相结合,提出fpdetect检测方案。
实验验证了所提检测方案的有效性。
关键词ROP攻击地址空间布局随机化操作系统检测函数指针IAbstractWith the rapid development of computer and network,people pay more and more attention to the security of computer.Return-oriented-programming(ROP)attack is a typical way of attacking computers by linking short instructions ending in RET in dynamic library functions.Defense mechanisms such as stack return address protection and address randomization(ASLR)enhance the security of the operating system to some extent.Therefore, how to circumvent these defense mechanisms to implement ROP attacks and how to detect ROP attacks have attracted extensive attention of researchers.In this paper,ROP attack mechanism and detection methods are studied.To solve the problem of how to bypass address randomization and stack non-execution when implementing ROP attack,a ROP attack bypassing ASLR is proposed,and a function pointer ROP attack is implemented for stack return address protection mechanism.Through the analysis of function pointer ROP attack,a fedetect detection scheme is proposed,which improves the accuracy of function pointer ROP attack.The main research work of this paper is as follows:(1)How to bypass ASLR protection is studied.In this paper,a ROP attack bypassing ASLR is implemented by returning to the_dl_runtime_resolve function to dynamically obtain the address of DLL function.(2)In this paper,we implement ROP attacks by modifying function pointer through buffer overflow vulnerability,bypassing stack return address protection,and successfully implement ROP attacks.(3)Improve the accuracy of ROP attack detection with function pointer.In this paper,by analyzing the characteristics of calling dynamic link library functions,combining static analysis with dynamic detection technology,a detection scheme of fpdetect is proposed. Experiments verify the effectiveness of the proposed detection scheme.Key words ROP Attack Address Randomization Operating System Detection Function PointerII目录第一章绪论 (1)1.1研究背景 (1)1.2研究现状与分析 (2)1.3研究内容 (4)1.4本文的结构 (4)第二章研究基础与相关知识 (6)2.1图灵完备性 (6)2.2return-into-libc攻击原理 (7)2.3ROP攻击的形成机理 (8)2.3.1ROP gadget的组成 (9)2.3.2ROP原理解析 (11)2.4函数信息提取相关知识 (12)2.4.1PE文件 (12)2.5本章小结 (18)第三章ROP攻击的实施 (19)3.1绕过ASLR的ROP技术 (19)3.1.1GOT表和PLT表 (19)3.1.2重定位的工作机制 (23)3.1.3绕过ASLR的ROP攻击实现 (24)3.2函数指针ROP攻击 (26)3.2.1加载常数到寄存器 (26)3.2.2栈空间布局分析 (28)3.2.3函数指针注入攻击实现 (30)3.2.4函数指针ROP攻击实现 (31)3.3本章小结 (34)第四章ROP攻击检测 (35)4.1现有ROP攻击检测方法 (35)4.2fpdetect基本检测思想 (36)4.3函数指针ROP攻击检测 (38)4.4本章小结 (39)第五章总结与展望 (41)5.1总结 (41)5.2展望 (41)参考文献 (43)致谢 (48)攻读学位期间取得的研究成果 (49)第一章绪论1.1研究背景在这个信息全球化的时代,各种生产应用都趋于软件化、智能化,在计算机技术加快世界智能化步伐过程中,计算机软件系统潜在的缺陷和漏洞给我们的信息安全带来巨大的威胁。
恶意代码安全攻防
恶意代码安全攻防1. 实践内容1.1 恶意代码1.1.1 定义与分类定义:计算机按照攻击者的意图执⾏以达到恶意⽬标的指令集。
分类:计算机病毒、蠕⾍、恶意移动代码、后门、特洛伊⽊马、僵⼫程序、内核套件,融合型恶意代码。
计算机病毒:通过感染⽂件进⾏传播,能⾃我复制,需要⼈为⾏动或被执⾏。
蠕⾍:⾃主运⾏,主动扫描。
恶意移动代码:从远程主机下载并在本地执⾏的轻量级程序,较⾼⾃主性。
后门:绕过正常的安全机制,直接控制主机。
特洛伊⽊马:伪装的恶意软件。
僵⼫⽹络:传播恶意代码控制多台主机,实施⼀对多控制。
rootkit:修改⽤户态软件或内核,执⾏时获取root。
1.1.2 计算机病毒通过拷贝⾃⾝嵌⼊系统程序感染主机。
基本特性:感染性、潜伏性、可触发性、破坏性、衍⽣性。
潜在感染⽬标及机制:1. 可执⾏⽂件;前缀感染机制,拷贝在宿主程序的始端,执⾏宿主程序时⾸先运⾏病毒代码;后缀感染机制,拷贝在宿主程序的末端,通过跳转指令控制代码运⾏;插⼊感染机制,拷贝在宿主程序中间。
2. 感染引导扇区( 主引导区和分区引导区);感染引导区上的引导记录,在系统启动时先于操作系统截取系统控制权。
3. 宏指令数据⽂件:以宏指令的⽅式拷贝到⽬标中,造成感染。
1.1.3 ⽹络蠕⾍通过⽹络⾃主传播、⾃我复制,没必要感染宿主。
组成结构:1. 弹头:渗透代码,利⽤诸如⽹络服务,⽂件传输服务上的系统漏洞以获取主机访问权。
2. 传播引擎:通过弹头装载⾃⾝拷贝写⼊系统或通过在系统中利⽤⽹络⽂件传输服务加载⾃⾝拷贝。
3. ⽬标选择算法和扫描引擎:查找新⽬标,通过不同⽬标,如电⼦邮件地址、主机列表、被信任的系统选择相应算法确定⽬标地址。
4. 有效载荷:附加的攻击代码,如安装后门、或利⽤资源执⾏复杂计算。
1.1.4 僵⼫程序与僵⼫⽹络功能结构:1. 主体功能:命令控制模块和传播模块,⽤于僵⼫⽹络的控制和僵⼫陈旭的传播。
2. 辅助功能:信息窃取模块、主机控制模块、下载更新模块、防分析检测。
常见网络攻击手段原理分析
常见网络攻击手段原理分析(相当全面)
1、 如果请求的TCP端口是开放的,则回应一个TCP ACK报文,并建立TCP连接控制结构(TCB);
2、 如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。
相应地,如果IP协议栈收到一个UDP报文,做如下处理:
3、 发起者收到TCP ACK报文后,再回应一个ACK报文,这样TCP连接就建立起来了。
利用这个过程,一些恶意的攻击者可以进行所谓的TCP SYN拒绝服务攻击:
1、 攻击者向目标计算机发送一个TCP SYN报文;
2、目标计算机收到这个报文后,建立TCP连接控制结构(TCB),并回应一个ACK,等待发起者的回应;
1.7 没有设置任何标志的TCP报文攻击
正常情况下,任何TCP报文都会设置SYN,FIN,ACK,RST,PSH五个标志中的至少一个标志,第一个TCP报文(TCP连接请求报文)设置SYN标志,后续报文都设置ACK标志。有的协议栈基于这样的假设,没有针对不设置任何标志的TCP报文的处理过程,因此,这样的协议栈如果收到了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。
1.8 设置了FIN标志却没有设置ACK标志的TCP报文攻击
正常情况下,ACK标志在除了第一个报文(SYN报文)外,所有的报文都设置,包括TCP连接拆除报文(FIN标志设置的报文)。但有的攻击者却可能向目标计算机发送设置了FIN标志却没有设置ACK标志的TCP报文,这样可能导致目标计算机崩溃。
最常见网络攻击详细分析PPT课件
.
25
二、预攻击探测
➢端口扫描工具
图: NetScan.Tools
26
二、预攻击探测
图:WinScan
.
27
二、预攻击探测
图:SuperScan
.
28
二、预攻击探测
图:Nmap
.
29
二、预攻击探测
图: X-scan
.
30
二、预攻击探测
3.操作系统的识别
操作系统辨识的动机 ✓许多漏洞是系统相关的,而且往往与相应的版本对应 ✓从操作系统或者应用系统的具体实现中发掘出来的攻击手段 都需要辨识系统 ✓操作系统的信息还可以与其他信息结合起来,比如漏洞库, 或者社会诈骗(社会工程,social engineering)
第五章 常见的网络攻击与防范
➢网络攻击步骤 ➢预攻击探测 ➢漏洞扫描(综合扫描) ➢木马攻击 ➢拒绝服务攻击 ➢欺骗攻击 ➢蠕虫病毒攻击 ➢其他攻击
.
1
一、网络攻击步骤
➢网络安全威胁国家基础设施
控制
广播
通讯
因特网
信息对抗的威胁在增加 电力 交通
医疗
工业 金融
.
2
一、网络攻击步骤
➢网络中存在的安全威胁
➢删除文件 ➢修改文件 ➢产生安全后门 ➢Crash Computer ➢DoS ➢机密信息窃取
防火墙,入侵监测,防病毒, 漏洞扫描,安全意识等
典型攻击步骤图解
.
5
一、网络攻击步骤
➢攻击手法 vs. 入侵者技术
高
半开隐蔽扫描 攻击手法与工具
IP欺骗
拒绝服务
嗅探
DDOS 攻击
消除痕迹
www 攻击 自动探测扫描
第6讲-新型代码复用攻击及防御介绍
新型代码复用攻击
大多是在2010年以后提出的攻击方法。考虑到了对 代码复用攻击的防御,思考如何绕过这些针对性的 防御方法。
代码复用攻击的防御分类
代码复用攻击的防御方法也可以分为两大类:
ins;
配件!
ret;
ins;
ins;
配件!
ret;
......
粗粒度CFI的实现
粗粒度CFI规则的具体实现:
基于间接跳转指令跳转目标规则的实现
对call、jump、ret指令及其跳转目标的实时监控和 分析
基于配件长度(间接跳转指令频率)规则的实 现
对间接跳转指令和普通指令运行数量的实时监控和 分析
基于配件长度(间接跳转指令频率)的规则
配件长度和间接跳转指令的频率是完全等价的
配件长度越短,间接跳转指令出现的频率越高 配件长度越长,间接跳转指令出现的频率越低
粗粒度CFI的规则
基于配件长度(间接跳转指令频率)的规则
为了达成预期攻击目标,避免无用指令的干扰, 配件链通常由多个短配件组成。
短配件:配件中的指令数量不大于x 配件链:连续出现y个短配件 一旦发现连续出现y个长度不大于x的短配件,就认
基于配件长度(间接跳转指令频率)的规则
以上规则来源于对代码复用攻击行为特征的分析 需要设定合适的阈值,存在误判和漏判的可能 也被称为启发式CFI(heuristic-based CFI)
粗粒度CFI的规则
基于间接跳转指令跳转目标的规则:
ret指令
1)跳转到任意call指令的下一条指令 2)跳转到对应call指令的下一条指令
网络安全技术中的恶意代码检测与分析
网络安全技术中的恶意代码检测与分析1.引言随着互联网的不断发展,网络安全问题越来越引起人们的关注。
恶意代码(Malware)是一种能够损害计算机系统的程序,常见的恶意代码有病毒、蠕虫、木马、广告软件和僵尸网络等。
这些恶意代码不仅会破坏计算机系统,还会泄露个人隐私和商业机密等重要信息。
因此,在网络安全技术中,恶意代码检测和分析是非常重要的一个方面。
2.恶意代码分类在进行恶意代码检测和分析之前,必须先了解恶意代码的类型。
根据恶意代码的特性和目的,可以将恶意代码分为以下几类:2.1 病毒病毒是恶意代码中最为常见的一种,它会通过在合法程序中插入代码来感染其他程序,在用户不知情的情况下进行自我复制和传播。
病毒具有隐蔽性和破坏性,能够在计算机系统中扩散,并在病毒感染的计算机上执行一定的恶意行为,比如删除文件和窃取用户信息等。
2.2 蠕虫蠕虫是一种自我复制的计算机程序,它可以自主传播到计算机网络中的其他计算机,具有很高的感染力和传染速度。
和病毒不同,蠕虫可以完全自主运行而不需要依附于其他程序。
2.3 木马木马是一个伪装成合法程序的恶意代码,常常伪装成一些有用的软件来诱骗用户下载和安装。
一旦安装,木马就能够实现远程控制和命令执行等功能,攻击者可以通过木马窃取用户信息、攻击其他计算机系统等。
2.4 广告软件广告软件是一种通过弹窗、网页等形式来展示广告或者强制用户进行某些操作的程序。
广告软件也常常被称为“流氓软件”,因为它们经常会在用户不知情的情况下安装,占用带宽和资源,影响用户体验。
2.5 僵尸网络僵尸网络是由大量被感染的计算机组成的网络,攻击者可以通过这个网络来发起各种攻击。
一旦计算机感染了恶意软件,攻击者就可以远程控制它来实现各种目的,如发起DDoS攻击、窃取用户信息和进行网络钓鱼等。
3.恶意代码检测技术面对不同类型的恶意代码,必须采用不同的检测技术来进行检测。
下面介绍几种常见的恶意代码检测技术。
3.1 签名检测签名检测是一种常见的恶意代码检测技术,它是通过对已经发现的恶意代码进行分析和特征提取来建立恶意代码库,然后对系统中的二进制文件进行扫描匹配,从而检测出是否感染了恶意代码。
《网络安全》_第03章05节 恶意代码技术_恶意代码分析
北京邮电大学信息安全中心 郑康锋
kfzheng@
本次课程学习目标
学习完本次课程,您应该能够掌握:
恶意代码分析技术的概念 恶意代码静态分析技术 恶意代码动态分析技术 常见恶意代码分析工具 学会自己动手分析恶意代码
2
恶意代码分析技术
恶意代码分析技术概述 静态分析技术 动态分析技术 分析工具介绍 恶意代码分析实例演示
恶意代码动态分析技术
常用的挂钩技术包括 导入地址表挂钩(IAT HOOK) 系统服务描述表挂钩(SSDT HOOK) 中断描述符表挂钩(IDT HOOK) 驱动输入输出请求报文处理挂钩(IRP HOOK) 内联函数挂钩(Inline HOOK)
恶意代码动态分析技术
动态监测程序代码实现 动态监测程序一般都采用钩子(HOOK)程序挂钩API函数实现, 当恶意代码调用被挂钩的API函数时,即可根据函数的参数和返回信 息跟踪恶意代码的行为。根据钩子程序在操作系统中运行的级别可以 分为用户态监测程序和内核态监测程序。 用户态:用户模式下的方法实现简单、使用安全,而且效果良好。 但是这些方法只能监测到在用户态下API函数调用,对内核态调用的 函数无法监测。 内核态:利用更加底层的监测技术,达到更好效果。但是内核态 监测程序编写复杂,系统移植性差,程序运行稳定性要求更高。如果 内核态程序出错会造成蓝屏的后果。
3
恶意代码分析技术概述
恶意代码的概念
恶意代码是指一切旨在破坏计算机或者网络资源的可用性、机密 性和完整性的程序。现在还没有一个针对恶意代码的统一分类标准, 人们现在一般依据恶意代码的实现技术及行为特征把恶意代码分为计 算机病毒、网络蠕虫、特洛伊木马、后门、恶意脚本等。
恶意代码分析技术概述
恶意代码分析的意义
CISP0208恶意代码与安全漏洞
4
恶意代码发展史
1949:冯·诺依曼在《复杂自动机组织论》提出概念 1960:生命游戏(约翰·康维 )
磁芯大战(道格拉斯.麦耀莱、维特.维索斯基 、 罗伯.莫里斯 ) 1973:真正的恶意代码在实验室产生 1981年-1982年:在APPLE-II的计算机游戏中发现Elk cloner
服务器
恶意代码攻击技术-超级权限技术
为了对抗反恶意代码软件,恶意代码采用超级权 限技术限制反恶意代码的工作以保护自身
例:加载为设备驱动技术
恶意代码通过将 自身注册成为设 备驱动,从而获 得较高权限,阻 止反病毒软件对 它的查杀并干扰 反恶意代码软件 的正常运行
35
恶意代码攻击技术-端口反向连接技术
恶意代码与安全漏洞
培训机构 培训讲师
课程内容
2
知识域:恶意代码
知识子域:恶意代码基本概念原理
了解恶意代码的历史和发展趋势 理解常见恶意代码病毒、蠕虫、木马传播方式和危
害的特点 了解常见恶意代码变形、Rootkit等技术的原理
3
恶意代码的历史与发展趋势
恶意代码(Unwanted Code,Malicious Software,Malware,Malicous code)是指没有作 用却会带来危险的代码。
6
恶意代码发展史
1998年—netcat的Windows版发布(nc) 1998年—back orifice(BO)/CIH 1999年—melissa/worm(macrovirus by email) 1999年—back orifice(BO) for WIN2k 1999年—DOS/DDOS-Denial of Service TFT/
黑客代码分析与预防
黑客代码分析与预防黑客攻击是当今互联网世界中的一大威胁,对个人、组织和企业的信息安全造成为了严重的威胁。
为了保护自己的网络安全,了解黑客的攻击方式和分析黑客代码是至关重要的。
本文将详细介绍黑客代码分析的基本原理和方法,并提供一些预防黑客攻击的有效措施。
一、黑客代码分析的基本原理黑客代码分析是指对黑客使用的恶意代码进行深入研究和分析,以便确定其攻击方式和目的,从而采取相应的谨防措施。
黑客代码可以是恶意软件、病毒、蠕虫等形式,它们通过利用系统的漏洞、弱点或者社会工程学手段来入侵目标系统。
黑客代码分析的基本原理包括以下几个方面:1. 静态分析:通过对代码的反汇编、反编译和逆向工程等技术手段,分析恶意代码的结构、功能和执行流程。
静态分析可以匡助我们了解黑客代码的具体实现方式和攻击目标。
2. 动态分析:通过在安全环境中运行恶意代码,并监视其行为和影响,分析恶意代码的运行过程和对系统的影响。
动态分析可以匡助我们了解黑客代码的行为特征和攻击手段。
3. 漏洞分析:通过对系统漏洞的研究和分析,确定黑客利用的漏洞类型和攻击方式。
漏洞分析可以匡助我们修补系统漏洞,提高系统的安全性。
4. 溯源分析:通过对黑客攻击的溯源和追踪,确定黑客的身份和攻击来源。
溯源分析可以匡助我们采取相应的法律手段,追究黑客的责任。
二、黑客代码分析的方法1. 静态分析方法:(1)反汇编:使用反汇编工具将二进制代码转换成汇编代码,以便分析代码的执行流程和功能。
(2)反编译:使用反编译工具将二进制代码转换成高级语言代码,以便更好地理解代码的逻辑和结构。
(3)逆向工程:使用逆向工程工具将二进制代码还原成源代码,以便进行更深入的分析和修改。
2. 动态分析方法:(1)沙箱环境:在安全环境中运行恶意代码,监视其行为和影响,以便分析其攻击方式和目的。
(2)动态调试:使用调试工具对恶意代码进行动态调试,以便观察代码的执行过程和变量的变化。
(3)网络监控:监控网络流量和通信协议,以便分析黑客与恶意代码之间的交互过程。
恶意代码分析基础
– 将目标代码变换为易读形式的逆向分析过程,但是,这里 不是仅仅静态阅读变换之后的程序,而是在一个调试器或 调试工具中加载程序,然后一边运行程序一边对程序的行 为进行观察和分析。这些调试器或调试工具包括:一些集 成开发环境(Integrated Development Environment, IDE)提供的调试工具、操作系统提供的调试器以及软件厂 商开发的调试工具。
3. PE文件
由PE文件头 中的数据目录 表找到导入表 起始偏移地址 位置的过程
4. 程序的逆向分析
(1)逆向工程:
1)逆向分析工程的概念
• 逆向分析工程,简称逆向工程(Reverse Engineering),源于商业及军事领域中的硬件分析。 其主要目的是,在不能轻易获得必要的生产信息下, 直接从对成品的分析,推导出产品的设计原理。
– 动静结合的逆向分析能够很好地达到软件逆向分析的要求, 但也存在着结构复杂、难以实现等不足之处。
• BIOS芯片的恢复方式主要通过芯片编辑器写入或 直接找主板经销商更新,若能显示,也可通过软 件进行更新。现阶段的BIOS,都有关于BIOS写 入有效或无效的设置,作为预防,建议将BIOS写 入设置成无效。
1. 计算机启动过程
(1)操作系统启动过程及其安全性分析: 2)操作系统启动过程
• 读取指定启动顺序中的存储设备的主引导记录 • 硬盘启动 • 操作系统启动
• 计算机病毒等许多恶意代码本身也是可执行的,其文 件也遵循PE文件结构。。
3. PE文件
(2)PE文件结构: 1)PE文件总体结构
3. PE文件
(2)PE文件结构:
2)PE文件执行基本过程
• 当PE文件被执行时,PE装载器检查DOS MZ文件头 里的PE头偏移量。如果找到,则跳转到PE头。PE装 载器会检查PE头的有效性,确定该PE文件的总体信 息,紧接着读取节表中的节信息,并采用文件映射方 法将相应节映射到内存,PE装载器将处理PE文件中 最重要的导入表,从导入表中获取函数字符串名称信 息、DLL名称信息、导入函数地址表项起始偏移地址 等,最终完成PE文件的执行。
DDoS攻击工具——Trinoo 分析
arg1 password arg2
其中缺省的口令是"l44adsl",只有包含此口令子串"l44"的命令行会被执行。
从trinoo守护程序到主服务器的连接是在31335/UDP端口上实现。
当守护程序启动时,它将发送初始化字符串"*HELLO*"到主服务器。主服务器会(通过"sniffit"程序捕获)记录并维护已激活的守护程序清单:
echo "rcp 192.168.0.1:leaf /usr/sbin/rpc.listen"
echo "echo rcp is done moving binary"
echo "chmod +x /usr/sbin/rpc.listen"
echo "echo launching trinoo"
初始化运行时,出现主守护进程提示符,将等待输入口令。如果口令不正确,程序退出;如果口令正确,提示进程正在运行,然后产生子进程在后台运行,最后退出:
. . .
---------------------------------------------------------------------------
其中的"trin.sh"脚本产生如下输出:
---------------------------------------------------------------------------
2)然后对一个大范围的网络进行扫描以确定潜在的入侵目标。最有可能的是那些可能存在各种远程缓冲区溢出漏洞的主机,如wu-ftpd、RPC服务(cmsd, statd,ttdbserverd,amd)等。这些主机的操作系统最好是Sun Solaris 2.x和Linux,以便充分利用各种现成的rootkits和后门程序等。如果是其它系统则可用来保存工具和记录。
基于人工智能的网络恶意代码分析与检测
基于人工智能的网络恶意代码分析与检测随着互联网的普及和发展,网络恶意代码的威胁日益严重,给个人和组织的信息安全带来了巨大的挑战。
为了应对这一挑战,研究人员们开始采用人工智能技术来分析和检测网络恶意代码。
本文将探讨基于人工智能的网络恶意代码分析与检测技术,并讨论其应用前景和挑战。
一、引言随着互联网技术的快速发展,网络安全问题日益突出。
恶意代码作为一种常见的网络攻击手段,给个人用户、企业组织以及国家安全带来了严重威胁。
传统方法对于大规模、复杂、变种频繁出现的恶意代码进行分析和检测变得越来越困难。
因此,研究者们开始探索采用人工智能技术来解决这一问题。
二、基于机器学习的恶意代码分类与识别机器学习是实现基于人工智能技术进行恶意代码分类与识别最常用的方法之一。
通过对大量的恶意代码样本进行训练,机器学习模型能够学习到恶意代码的特征和模式,并能够准确地对新样本进行分类和识别。
1. 特征提取特征提取是机器学习中的重要环节,对于恶意代码分类与识别尤为重要。
传统的特征提取方法主要基于静态分析,如使用哈希函数计算文件的MD5值、提取文件的API调用序列等。
然而,这些方法在面对变种频繁、文件加密等恶意代码时效果不佳。
近年来,研究者们开始尝试基于动态分析来提取特征,如使用行为分析、模拟执行等方法来获取更加全面和准确的特征。
2. 分类与识别算法在特征提取之后,需要选择合适的机器学习算法进行分类与识别。
常用的算法包括支持向量机(SVM)、决策树(Decision Tree)、随机森林(Random Forest)等。
这些算法能够根据训练数据中学到的模式和规则来对新样本进行分类判断。
三、基于深度学习的恶意代码分析与检测深度学习是近年来兴起并广泛应用于各个领域的一种机器学习技术。
与传统的机器学习算法相比,深度学习算法能够通过构建深层神经网络来提取更加抽象和高级的特征,从而提高恶意代码分析与检测的准确率和效果。
1. 卷积神经网络(CNN)卷积神经网络是一种特殊的深度学习网络结构,主要用于图像处理和模式识别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内存区域
• 区域指的是地址空间中的一片连续地址。区域的 必须是最小单位(一般是64k)的整数倍。区域的状 态有空闲、私有、映射、映像。 • 进程可以用VirtualAlloc/ VirtualFree申请/删除区 域,这时候的区域状态是私有,但是还不可以存 取数据,因为还需要和物理内存关联。 • 当exe或DLL文件被映射进了进程空间后,区域状 态变成映像;当一般数据文件被映射进了进程空 间后,区域状态变成映射。
– – – – – – – – 纯文本 格式文本 带指令的文本(word宏) 脚本文件 EXE,ELF,a.out 静态lib DLL,SO 驱动文件,modules in linux
• 程序文件
Windows的系统文件
• Exe、dll、sys • 配置文件 C:\WINDOWS\system32\config\system C:\WINDOWS\system32\config\sam C:\WINDOWS\repair\sam • Windows的系统文件de自我保护
关于
• 那些盗版、破解软件,那些外挂程序,都 是什么人、怎么做的,用的什么技术和方 法啊? • 我和你一样好奇。 • 本文向你解释他们怎么做的。 • 虽然本文的示例程序一般从C源程序开始, 但是他们显然没有。 • 事实上,他们直接拿二进制程序开刀。
From the very begin:文件格式
• 数据文件
函数调用约定风格
• _cdecl 是C Declaration的缩写,C语言默认的函 数调用方法:所有参数从右到左依次入栈,参数 由调用者清除。 • _stdcall 是Standard Call的缩写,是C++的标准调 用方式:所有参数从右到左依次入栈(调用类成 员时,最后一个入栈的是this指针)。参数由被调 用的函数在返回后清除,使用的指令是 retn X,X 表示参数占用的字节数。 • _fastcall 是编译器指定的快速调用方式。由于大 多数的函数参数个数很少,使用堆栈传递比较费 时。因此_fastcall通常规定将前两个(或若干个 )参数由寄存器传递,其余参数还是通过堆栈传 递。不同编译器编译的程序规定的寄存器不同。 返回方式和_stdcall相当。
32bit 4GB
• • • • x86 i386 x86-64 IA-64 Itanium (安腾)
• 32位地址 • 4G地址空间
Windows内存划分
• 32位系统上进程地址空间是2^32=4G,范 围从0x0000 0000~0xFFFF FFFF。 • 0x00000000-0x0000FFFF(0k-64k)为 NULL指针范围,如果访问该范围(以及其他 未经映射的页面)会报告非法访问。另外, DOS程序还使用这个区域。 • 0x00010000-0x003FFFFF (64k-4M)为 DOS程序保留,在某些条件下可以读写。
• •
映射过程
• • 进程地址空间的地址是虚拟地址,当取到指令时,需要把 虚拟地址转化为物理地址才能够存取数据。这个工作通过 页目和页表进行。 映射过程:逻辑地址高10位用来找到1024个页目项中的 一项,取出页表的物理地址后,利用中10位来得到页表项 的值,根据这个值得到物理页的地址,由于一页有4K大 小,利用低12位得到单元地址,这样就可以访问这个内存 单元了。 CPU的CR3寄存器会保存当前进程的页目物理地址。 当进程被创建时,同时需要创建页目和页表,一共需要 4.4M。在进程的空间中,0xC030 0000~0xC030 0FFF是 用来保存页目的4k空间。0xC000 0000~0xC03F FFFF是 用来保存页表的4M空间。也就是说程序里面访问这些地 址你是可以读取页目和页表的具体值的(要工作在内核方 式下)。
tasklist /m
• 观察重要的DLL
•
重要的dll函数
• • • • • bind send recv connect hmemcpy (in win9x) GetWindowText GetDlgItemText MessageBox
• 用IDA查看系统DLL:导出函数
Exe文件:visual studio角度
Ollydbg(od)的使用
• 汇编/寄存器/栈/数据窗口 • 内存地图 • …
使用断点
• • • • 在当前某行 在某地址、在某个地址范围 某个条件触发 当执行、读、写时
• 某个系统dll函数
Байду номын сангаас 演示bp bind
• 使用bp bind • 修改bind端口+1
在运行中:修改exe代码和数据
• 调试模式(DEBUG_PROCESS)
• • • • • • • main.c main.exe 观察:汇编、机器码 观察:函数、地址 观察:局部变量和BP 观察:参数和堆栈 观察:函数返回时参数ESP调整
用vc看函数调用过程
• • • • • • • • • • int f1(int a , int b) { int c; c=a+b; return c; } main() { int s = f1(0x11223344,0x55667788); printf… }
内存、地址
• • • • 物理内存 分段:CS DS ES SS FS GS 分页,页表,non-page 进程逻辑地址空间
物理内存
• 存储器分为CPU缓存(1/2/3级)、主存、外存(磁盘等)。主 机板上能够插放的物理内存条的个数和容量是有限制的。 • PC机上许多设备拥有自己的设备内存,这些设备内存会 映射到PC机的物理内存地址上,读写这段物理地址其实 会访问设备内存。 • Windows各系列支持的物理内存上限是不一样的,从2G 到64G不等。理论上32位CPU硬件上只能支持4G内存的 寻址,超过4G的内存只能靠其他技术来弥补。 • 比如Windows Server/32企业版即可使用超过4G物理内存 (虽然单进程地址空间仍限制是4G)。 • 物理内存分配的最小单位是页4K或4M(或者是其他值)。 8086开始支持的分段机制在i386之后被淡化。
• _thiscall 是为了解决类成员调用中this指针传递而 规定的。_thiscall要求把this指针放在特定寄存器 中,该寄存器由编译器决定。VC使用ecx, Borland的C++编译器使用eax。返回方式和 _stdcall相当。 • PASCAL 是Pascal语言的函数调用方式,也可以 在C/C++中使用,参数压栈顺序与前两者相反。 • C中不加说明默认函数为_cdecl方式(C中也只能 用这种方式),C++也一样,但是默认的调用方 式可以在IDE环境中设置。
Windows内存划分
• 0x00400000-0x7FFEFFFF(4M-2G)为独享用 户分区,这将近2G的空间是进程独享的。如果在 boot.ini上设置了/3G,这个区域的范围即从2G扩 大为3G:0x00010000-0xBFFE-FFFF。系统dll在 这个区域,比如是0x7xxxxxxx。 • 0x80000000-0xFFFFFFFF这个空间是供操作系 统内核代码、设备驱动程序、设备I/O高速缓存、 非页面内存池的分配、进程目表和页表等使用。 这段地址各进程是可以共享的。 • 如果在boot.ini上设置了/3G,这个区域的范围从 2G缩小为1G:0xC0000000-0xFFFFFFFF。
•
•
代码、数据、堆栈
• CS IP • DS ES • SS SP
• EIP ESP • 访问非法地址
寄存器
• • • • • • • • AL,AH,AX,EAX,RAX AX,BX,CX,DX,BP,SP,SI,DI CS,DS,SS,ES,FS,GS FLAGS,IP CR0,CR1,CR2,CR3 调试寄存器 测试寄存器 …
• if ( v2 == 267 ) • { • if ( *(_DWORD *)(v1 + 116) > 0xEu ) • { • v3 = 0; • v4 = *(_DWORD *)(v1 + 232) == 0; • goto LABEL_10; • } • LABEL_5: • v20 = 0; • goto LABEL_11; • } • 【备注行】
• •
PT
•
交换文件
• 交换文件是存在硬盘上的系统文件,它的大小 可以在系统属性里面设置,它相当于物理内存 ,所以称为虚拟内存。它的大小是影响系统快 慢的关键因素之一,尤其是物理内存不多的情 况下。 分页内存Paged Pool和非分页内存Nonpaged Pool区别:分页内存是指可以被交换到硬盘上 的内存页,非分页内存是指不能被换出的内存 页,即他只能存在于物理内存内,被交换到硬 盘上。
• 用OllyDbg查看布局
阅读exe代码
• 静态分析:IDA • 动态调试:ollydbg
用IDA查看EXE/DLL
• 二进制、汇编、伪代码、调用图
• • • • • Section/segment 函数:导入和导出 起始地址 函数/代码调用关系图 伪代码:F5
IDA:汇编代码和流程图
•
P-code
Exe和dll
• 系统DLL
– kernel32.dll user32.dll ntdll.dll shell32.dll GDI32.dll OLE32.dll comctl32.dll ,,, – msvcr71.dll msvcr90.dll – mfc42.dll mfc71.dll mfc80.dll mfc90.dll – WS2_32.dll / Winsock.dll
装载exe
• 装载一个exe文件时,系统不会将整个exe 文件和所有的DLL文件装载进物理内存中, 同时它也不会装载进页面文件中。相反, 它会建立文件映射,也就是利用exe本身当 作页面文件。系统将部分二进制代码装载 进内存,分配页面给它。