0x01 MS-DOS头 MS-DOS头部的字段重点关注e_magic与最后一个e_lfanew是需要关注的. 第一个e_magic字段的值为4D5A,作用是可以作为判断这个文件是否是PE文件. 最后一个e_lfanew字段可以引导我们找到新的EXE文件头,从而进一步判断这个可执行文件是否为PE文件. 如果从这个文件开头用PIMAGE_DOS_HEADER解析,e_magic成员不是IMAGE_DOS_SIGNATURE,那么就不是一个PE文件. MS-DOS头结构: typedef struc…
0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描. 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的. 修改区段名 1.1 移动PE文件头位置免杀 工具:PeClean SizeOfOptionalHeader字段来描述扩展头的大小,恒定值为0xE0. 某些程序直接使用0xE0对PE文件进行处理,对于修改过的程序会被识别为非PE文件. 1.2 导入表移动免杀 通过修改程序里导入表ThunkValue值实现. 1)通过ThunkValue的偏移地址,找到AP…
0x1 if-else分支 if-else分支4种状态 1.1 以常量为判断条件的简单if-else分支 C源代码: 单层if-else判断,常量为判断条件 int _tmain(int argc, _TCHAR* argv[]) { int nTest = 1; if (nTest>0) printf("Hello world!\r\n"); else printf("Hello everybody!\r\n"); return 0; } if-else分支…
0x1 准备工作 1.1.准备工具 IDA:交互式反汇编工具 OllyDbg:用户层调试工具 Visual Studio:微软开发工具 1.2.基础知识 C++开发 汇编语言 0x2 查找真正的main()函数 入口点开始到Main()函数之间的代码都是编译器加进去用于初始化环境用的. main()函数其实是有3个参数的,这取决于Windows系统的机制. 查找方法: 1.字符串搜索法 2.栈回溯法 3.逐步分析法 4.小例子 C源代码: 程序执行的时候会将路径保存在argv字符数组中,因此ar…
第3章 免杀与特征码 这一章主要讲了一些操作过程.介绍了MyCCL脚本木马免杀的操作,对于定位特征码在FreeBuf也曾发表过类似工具. VirTest5.0特征码定位器 http://www.freebuf.com/sectool/40580.html 细读一遍这一章的知识才知道自己当时使用MyCCL免杀失败的原因.因为某些反病毒软件的扫描器采用的是密码校验和技术,密码校验和指的是将一段病毒文件代码计算出特定的值,然后与病毒库的值进行比对,如果匹配到特征码则有毒,反之则无毒. 3.1 特征码免…
1.免杀技巧的遏制 1.1.PE文件 入口点不在第一个区段或在最后一个区段 入口点处代码附近只有一小段代码 入口点在正常范围之外 入口点为一个无效的值,实际入口点为TLS的入口点 区段名重复或者不属于正常范围 拥有可执行属性的区段数量过多 1.2.程序行为 加载系统DLL 枚举反病毒软件进程的窗口 将自己复制到系统目录 安装SPI(控制网络通信或者另类的方法远程注入DLL文件) 远程注入线程或改写其他进程的内存 操作MBR 2.Anti Rootkit 2.1.检查SSDT钩子与IDT钩子 一般…
1.源码免杀 1.1 定位产生特征的源码 定位文件特征 1.根据MyCCL的特征码定位工具,定位出有特征的地址 2.根据VS的反汇编窗口,输入有特征的地址得到特征地址与源码的关系 3.插入MessageBox,然后定位出特征码离哪个MessageBox最近,并在附近以更高密度安插MessageBox,最终定位出产生特征码的源码位置. 定位行为特征 1.启发式检测方法:特征码定位突破 2.虚拟机检查方法:通过控制程序仅执行部分代码,在远程线程注入前插入MessageBox,起到断点作用. 3.基于…
1.构建Rootkit基础环境 1.1.构建开发环境 VS2012+WDK8 1.2.构建基于VS2012的调试环境 将目标机.调试机配置在同一个工作组内 sVS2012配置->DRIVER->Test->Configure Computers,Add New computer按钮. 1.3.构建基于Windbg的调试环境 WinDBG+Vmware+VirtualKD 1.4.将Rootkit加载到系统 SCM(服务控制管理器)加载驱动 OpenSCManager():获取SCM句柄…
0x1 switch-case分支 switch-case其实就是if-else语句的另一种体现形式.但大于3之后的switchc-case.编译器会对代码进行优化. 1.1 简单switch-case分支识别技巧 C源代码: int _tmain(int argc, _TCHAR* argv[]) { int nNum = 2; switch (nNum) { case 0: printf("nNum=0", nNum); break; case 1: printf("nN…
虚函数存在是为了克服类型域解决方案的缺陷,以使程序员可以在基类里声明一些能够在各个派生类里重新定义的函数. 1 识别简单的虚函数 代码示例: #include "stdafx.h" #include <Windows.h> class CObj { public: CObj():m_Obj_1(0xAAAAAAAA),m_Obj_2(0xBBBB) { printf("CObj() Constructor...\r\n"); } ~CObj() { pr…
一般流程:开发人员写出java源代码(.java) ->  javac(编译器) -> java字节代码(.class) -> 加载 -> java虚拟机(jvm)运行. 1.常见java源代码的字节代码表现形式 包名: com.java.sample -> com/java/sample 基本类型:byte.char.double.float.int.long.boolean -> B.C.D.F.I.J.S.Z 引用类型:统一使用 "L" 前缀和…
Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结 1. ,免杀技术的用途2 1.1. 病毒木马的编写2 1.2. 软件保护所用的加密产品(比如壳)中,有一些会被杀毒软件误认为是木马或病毒:2 1.3. 一些安全领域中使用的部分安全检测产品,也会被杀毒软件误杀.2 1.4. 远程监控技术一样.2 2. 1.3 免杀的发展史2 3. 免杀技术的简单原理2 3.1. 现在的免杀主要分为3种,其中的一种便是行为免杀,也就是通过控制病毒木马的行为来达到躲过杀…
原创博客,转载请注出处! 我的公众号,正在建设中,欢迎关注: Meatsploit介绍 2018/01/03 更新 Metasploit是一款优秀的开源(!= 完全免费)渗透测试框架平台,在该平台下可以方便的实施渗透测试,Meatsploit具有繁多的接口.模块等等,甚至允许用户自己编写自己的模块使用.在Metasploit框架下可以方便的实现木马的生成.捆绑.免杀.实验楼网站存在此节课程但是是收费的,How frustrating,,,,so,,,,,:) 0X01选择攻击载荷 首先,开启终端…
0x001 原理 采用分离法,即将ShellCode和加载器分离.方法较LOW但免杀. 本文主要将ShellCode转成HEX,再通过加载器执行ShellCode. PS: 何为SC加载器,即专门用于加载所提供ShellCode的工具. 如同HTTP发包工具,支持提交HTTP,写死参数最多只能叫EXP. 再详细点,打个比方,你只会炒一个菜,你敢说你是厨师吗? 0x002 ShellCode免杀 CS可生成很多种格式的ShellCode,具体该用哪一种呢? 由于部分杀软会查杀ShellCode文件…
读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况. Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检索和显示那些文档,但这些信息只是由服务器单向传送给浏览器,并不需要验证用户的合法性,所有用户同等,提供同样的信息. 所以当时一个Web站点的安全威胁主要来自于Web服务器系统与相关软件的(诸多)漏洞.攻击者入侵站点后并不能得到敏感信息,至多修改一下服务器上的静态文件,歪曲站点的内容,或者利用服务器本…
20155308 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件. 基于行为来检测:通过对恶意代码的观察.研究,有一些行为是恶意代码的共同行为,而且比较特殊.所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件. 免杀是做什么? 能使病毒木马避免被杀毒软件查杀的技…
20155321 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 根据实验指导书,杀软有两个方法可以检测出恶意代码.第一种是基于特征码,即先对流行代码特征的提取,然后进行程序的比对,如果也检测到相应的特征码的程序即为检测出恶意代码.第二种是基于行为,即杀软通过检测程序是否有更改注册表行为.是否有设置自启动.是否有修改权限等等行为进行判断,但此方法有一定的错误率,相当于如果你做了别人应该做的事,那我就认为你是别人. 免杀是做什么? 即使用一些技巧避开杀软的检测…
2018-2019-2 20165312<网络攻防技术>Exp3 免杀原理与实践 课上知识点总结 1.恶意软件检测机制 基于特征码的检测(需要定期更新病毒库) 启发式恶意软件检测(实时监控,开销较大) 基于行为的恶意软件检测(如API监控) 2.免杀技术综述 改变特征码 加壳(拥有.exe文件) 压缩壳 加密壳 shellcode+encoder 重写重编译(veil-evasion或者手工) 半手工化(主流) 改变行为 通讯方式 尽量使用反弹式连接 使用隧道技术 加密通讯数据(如https)…
2018-2019-2 20165205 网络攻防Exp3免杀原理与实践 一.实践内容 1.1正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程 1.1.1正确使用msf编码器 尝试用msf编码器对后门程序进行多次编码,尝试降低被查杀概率 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 55 -b '\x00' LHOST=10.…
20145236<网络攻防> Exp3 免杀原理与实践 一.基础问题回答 1.杀软是如何检测出恶意代码的? 恶意代码有其特有的特征码,杀软将特征码加入检测库中,当检测到一段代码中具有这样的特征码时就可以判断为恶意代码. 为了防止自身特征码被检测,有些恶意代码使用了免杀加壳软件进行加壳,一些流行的加壳软件已经可以检查出来,如果被这样的加壳软件加壳就可能是恶意代码. 判断该代码是否有恶意行为,若有就会判断代码是恶意代码. 2.免杀是做什么的? 通过各种手段免除计算机对恶意代码查杀即为免杀. 3.免…
20155226<网络攻防> Exp3 免杀原理与实践 实验过程 1. msfvenom直接生成meterpreter可执行文件 直接将上周做实验时用msf生成的后门文件放在virscan.org中进行扫描,扫描结果如下: 从上图可以看出,有19/39的杀毒软件发现有病毒,说明该后门程序很容易被发现 2. Msfvenom使用编码器生成meterpreter可执行文件 (1)一次编码: 使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/s…
20155318 <网络攻防>Exp3 免杀原理与实践 基础问题 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件. 基于行为来检测:通过对恶意代码的观察.研究,有一些行为是恶意代码的共同行为,而且比较特殊.所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件. 免杀是做什么? 避免被杀毒软件或管理员发现并删除的恶意代…
20155330 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征码.先对流行代码特征的提取,然后进行程序的比对,如果也检测到相应的特征码的程序即为检测出恶意代码. 基于行为.杀软通过检测程序是否有更改注册表行为.是否有设置自启动.是否有修改权限等等行为进行判断. 免杀是做什么? 恶意代码避免杀毒软件查杀,从而实现入侵. 免杀的基本方法有哪些? 对恶意代码进行加壳 利用shellcode进行编码 实践过程记录 使用msf生成后门程序的检测 将实验二中…
2015306 白皎 <网络攻防>Exp3 免杀原理与实践 一.实践基础 免杀,故名思义,指的是一种能使病毒木马免于被杀毒软件查杀的技术. 免杀的方法有很多,比如加壳改壳.加垃圾指令.以及修改内存特征码,在本博客后面就是通过把具有特征码的代码顺序互换一下来达到免杀的目的. 二.实践内容 第一项: Msfvenom编码器生成的程序 1.直接利用上次后门实验生成的exe文件进行检测~ 可以明显的看到将近一半的杀软都可以检测出来错误,说明这个木马不行,之后我们会进行改造,尽量使文件不要被查杀出来.…
因为时间有限,只对书中后半部分几个篇章进行了阅读.        一.另一条路       作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面软件,而是走了另一条路,也就是写在服务器上运行的软件.而事实证明,他们是正确的,他们不但取得了巨大成功,甚至可能引领了下一个潮流.       其实说到潮流,大多数人都在追随着潮流,当然这不是件什么坏事.但是我们不能总是在现有的潮流中迷失自己.也就是说,眼光要放长远一点.你永远不知道下一个潮流是什么…
从攻防对抗辩证性分析jsp免杀 从最早的最朴素木马 <%@ page import="java.io.InputStream" %> <%@ page import="java.io.BufferedReader" %> <%@ page import="java.io.InputStreamReader" %> <%@page language="java" pageEncoding…
1.免杀的过程: 使用Metasploit生成C语言风格的一些shellcode作为载荷,这里使用Windows bindshell,功能为选定一个TCP端口与cmd.exe进程绑定在一起,方便攻击者远程连接进行操控. 输入命令: msfvenom -p windows/shell_bind_tcp LPORT=1337 -f c -o payload.c 查看该c文件: 接着在Python中调用ctypes库,定义一个存在该shellcode的变量,把变量看作是一个C语言的函数,执行它即可.…
第1章 魔鬼训练营--初识Metasploit 20135301 1.1 什么是渗透测试 1.1.1 渗透测试的起源与定义 如果大家对军事感兴趣,会知道各国军队每年都会组织一些军事演习来锻炼军队的攻防战术与作战能力.在信息科技的发源地--美国的军事演习中,将美军称为"蓝军",将假想敌称为"红军",而这种军事演习的方式也在20世纪90年代时,由美国军方与国家安全局引入到对信息网络与信息安全基础设施的实际攻防测试过程中.由一群受过职业训练的安全专家作为"红队&…
免杀原理及基础问题回答 免杀原理: 免杀指的是一种能使病毒木马免于被杀毒软件查杀的技术.由于免杀技术的涉猎面非常广,其中包含反汇编.逆向工程.系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容.其内容基本上都是修改病毒.木马的内容改变特征码,从而躲避了杀毒软件的查杀. 基础问题 1.杀软是如何检测出恶意代码的? 杀毒软件的原理就是匹配特征码.当扫描得到一个文件时,杀毒软件会检测这个文件里是否包含病毒库里所包含的特征码,如果有,则报毒病查杀,如果没有,纵然这个文件确实是一个病…
0x01 meterpreter简介 MetasploitFramework是一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台,它集成了各种平台上常见的溢出漏洞和流行的shellcode,并且不断更新,使得缓冲区溢出测试变的方便和简单. 需要说明的是meterpreter在漏洞利用成功后会发送第二阶段的代码和meterpreter服务器dll,所以在网络不稳定的情况下经常出现没有可执行命令,或者会话建立执行help之后发现缺少命令,经常出现什么sending stager er…