对Bringing a GAN to a Knife-fight Adapting Malware Communication to Avoid Detectio的简单理解

本文主要是介绍对Bringing a GAN to a Knife-fight Adapting Malware Communication to Avoid Detectio的简单理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主要技术:
提出利用GANS生成网络流量,以模拟其他类型的流量。
:即修改了恶意软件的网络行为,从而去模仿合法的申请行为,然后避免了堵截,或者检测。

这里设想了自适应恶意软件和自适应IPS的可能性。
(IPS: 入侵防御系统(Intrusion-prevention system)是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为)

eg.通过修改恶意软件的源代码从GAN接收参数,通过参数的反馈,可以调整其命令和控制通道的行为,以模拟Facebook聊天网络的行为。这种方法可以让恶意软件避免检测成为可能。
(GAN使用真实的Facebook聊天网络流量参数来训练预定的时间。经过训练的GAN生成器将其输出参数与恶意软件通信。恶意软件根据这些参数调整其通信量,并继续其工作。恶意软件的流量在网络中从不停止,它只是改变而已。恶意软件检测它是否在最后一次窗口中被阻止,并使用这些信息向GAN发出需要额外培训和数据的信号.)

两个约束:
1.首先,恶意软件应该是真实的,并在网络中执行真正的恶意操作,这是知道修改了恶意软件而没有影响其操作的唯一方法。
2.第二个限制是恶意软件的拦截也应该是真实的,因为这可能会扰乱其操作。
(其:指的应该是对GAN生成器参数的修改,还有对恶意软件修改动作)

贡献contributions:
1.使用GAN模拟给定流量配置文件的网络流量行为。(即使给了正常的文件网络流量)
2.基于GAN给的参数让恶意软件模拟正常的流量行为。
3.在实验中用了IPS做阻塞实验。 (即是对修改了行为的恶意软件检测其效果)
4.提出了一种新的基于恶意软件被IPS阻塞之后用GAN进行回馈调整的机制。

背景工作:
A.生成对抗性网络(GAN)
主要部分:生成器G与辨别器D
先对G输入一个随意的值,然后放入D中,让G利用D对其的反馈值完善G生成的样本,使G生成D无法辨认其真假的样本。
B.隐秘恶意软件通信Stealthy Malware Communication
恶意软件通常隐藏其C2通道以保持未被检测到。一类规避方法并不试图模仿其他通信量,而是使用各种不同的、可信的和难以找到的基础设施去实现这个避规功能。另外一类则通过描述其网络协议将流量转化为另外一个应用协议。
(C2通道:在数据传输中的一个通道)
C.红队工具Red Team Tools
在渗透测试期间,红色团队通常依赖于利用后开发框架来模拟网络和主机环境中的恶意软件行为。
(红队:即是开发者吧)

以下对核心方法的图像化:
在这里插入图片描述
GAN是独立实现的,并通过Web服务与恶意软件进行通信。恶意软件获取参数并实时修改其通信量。维护C2通道并应投入运作,IPS阻止所有看起来不像正常软件的流量。

生成方法:
A.风险模型(我的理解:决定整个过程效果的部分)
风险模型的三个主要部分:检测器,恶意软件,C2服务器。
检测器检查受感染主机与Internet之间的所有网络流量,并决定是否允许每个IP地址的流量通过。若是恶意软件的流量并不与正常软件流量相似,则会被封锁流量。
B.GAN
web服务器用来促进GAN与恶意软件之间的交流。Web有两个API调用get params 和 feedback.
Get params API调用加载保存的生成器模型并生成新的流量参数,然后将这些参数作为JSON对象发送回恶意软件。生成的参数也保存到本地文件中。
Feedback反馈API调用加载已保存的生成器和鉴别器模型,并基于收到的反馈(阻塞的流量),将上一次窗口的参数添加到当前数据集。随后,使用增强数据集执行五次另一训练循环。
C.恶意软件
为了评估此方法,使用了名为流感的开源远程访问特洛伊木马RAT(流感病毒)。对流感病毒进行了修改,以接收来自GAN发生器的输入,并调整其网络行为。
客户端与服务器之间的通信是通过HTTP建立的。流感客户端依次执行以下操作:
1)检查服务器是否联机。
2)发送心跳消息 唯一标识符。
3)从预先配置的URL路径中检索XML文件。XML文件包含一个命令id和客户端执行所需的命令列表。(即是在文件有着GAN回馈回来的信息)
3)执行任何“新”命令 在xml文件中。(修改了恶意软件的网络行为,如影响每个流的时间、持续时间和请求大小)
步骤之间按顺序执行,每个步骤之间间隔5秒,所以是可以预测的。
D.入侵预防系统Intrusion Prevention System
使用Stratosphere Linux IPS (slips) system(平流层Linux IPS系统),因为它对网络中的行为进行建模,并使用机器学习算法检测网络中的行为。
该方法的核心是读取从流量到模型的网络流,并为每个流提取三个特征:持续时间、大小和周期性(最后三个流动之间的时间差之比),每个流的每个特征组合都被分配一个状态。由于流是顺序的,状态是顺序的,所以从中建立了一种模型(Markov模型,被存储在磁盘上)。在检测过程中,未知流量被转换为状态序列,然后,计算每个未知状态序列与生成的存储模型(正常软件的状态模型)匹配的概率,并且阻止不匹配普通模型或与恶意软件模型匹配的ip地址。

OK,以上。

这篇关于对Bringing a GAN to a Knife-fight Adapting Malware Communication to Avoid Detectio的简单理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/283756

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 10130 简单背包

题意: 背包和 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念