范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

JAVA逆向ampamp反混淆追查Burpsuite的破解原理

  0x00 摘要:
  本系列文章通过对BurpLoader的几个版本的逆向分析,分析Burpsuite的破解原理,分析Burpsuite认证体系存在的安全漏洞。
  0x01 JD-GUI的用途与缺陷:
  JD-GUI是一款从JAVA字节码中还原JAVA源代码的免费工具,一般情况下使用这款工具做JAVA逆向就足够了,但是由于其原理是从JAVA字节码中按照特定结构来还原对应的JAVA源代码,因此一旦字节码结构被打乱(比如说使用混淆器),那么JD-GUI就会失去它的作用,如图为使用JD-GUI打开Burpsuite时的显示:
  显然,JD-GUI没能还原JAVA源代码出来,因为Burpsuite使用了混淆器打乱了字节码结构 所以,JD-GUI适用于‘没有使用混淆器’的JAVA字节码,而缺陷是一旦字节码结构被打乱,则无法发挥它的作用
  0x02 字节码分析:
  Java的字节码并不像普通的二进制代码在计算机中直接执行,它通过JVM引擎在不同的平台和计算机中运行。
  JVM是一个基于栈结构的虚拟计算机,使用的是JVM操作码(及其助记符),在这一点上和普通二进制反汇编的过程非常相似。 对Java字节码进行反编译其实非常简单,JDK内置的Javap工具即可完成这项任务。 示例:对Javar.class进行反编
  注意javap的-c参数是显示详细代码,否则只显示method,而按照java的老规矩Javar不要加后缀名 同时你也可以使用eclipse的插件Bytecode Visualizer来反编译字节码
  注意右面的流程图,大家在上程序设计导论课时都画过吧,现在发现它的用途了吧,一眼就看出是一个if-else结构,前两句定义i变量,然后取i=2压栈常数1,比对i和1以后就都java.lang.system.out了,一个输出wooyun,一个输出lxj616。
  0x03 老版本的BurpLoader分析:
  随着Burpsuite的更新,BurpLoader也在跟着进行更新,我们从老版本的BurpLoader入手,简要分析一下之前老版本的burpsuite破解原理。 本处选用了1.5.01版本的BurpLoader进行分析 首先试着用JD-GUI载入BurpLoader:
  成功还原了BurpLoader源代码,只可惜由于是对burpsuite的patch,所以burpsuite的混淆在burploader里仍然可读性极差,不过可以推断burploader本身没有使用混淆工具。public static void main(String[] args)
  {
  try
  {
  int ret = JOptionPane.showOptionDialog(null, "This program can not be used for commercial purposes!", "BurpLoader by larry_lau@163.com", 0, 2, null, new String[] { "I Accept", "I Decline" }, null);
  //显示选择对话框:这程序是出于学习目的写的,作者邮箱larry_lau(at)163.com
  if (ret == 0) //选择我同意
  {
  //以下用到的是java反射机制,不懂反射请百度
  for (int i = 0; i < clzzData.length; i++)
  {
  Class clzz = Class.forName(clzzData[i]);
  //是burpsuite的静态类(名字被混淆过了,也没必要列出了)
  Field field = clzz.getDeclaredField(fieldData[i]);
  //静态类中的变量也被混淆过了,也不必列出了
  field.setAccessible(true);
  //访问private必须先设置这个,不然会报错
  field.set(null, strData[i]);
  //把变量设置成strData(具体那一长串到底是什么暂不讨论)
  }
  Preferences prefs = Preferences.userNodeForPackage(StartBurp.class);
  //明显preferences是用来存储设置信息的
  for (int i = 0; i < keys.length; i++)
  {
  // key和val能猜出是什么吧
  String v = prefs.get(keys[i], null);
  if (!vals[i].equals(v))
  {
  prefs.put(keys[i], vals[i]);
  }
  }
  StartBurp.main(args);
  }
  }
  catch (Exception e)
  {
  JOptionPane.showMessageDialog(null, "This program can only run with burpsuite_pro_v1.5.01.jar", "BurpLoader by larry_lau@163.com",
  0);
  }
  }
  }
  因此,BurpLoader的原理就是伪造有效的Key来通过检测,Key的输入是通过preference来注入的,而我猜测它为了固定Key的计算方法,通过反射把一些环境变量固定成常量了
  0x04 新版本的BurpLoader分析:
  以下用1.6beta版的BurpLoader进行分析: 首先用JD-GUI尝试打开BurpLoader:
  看来这个版本的BurpLoader对字节码使用了混淆,这条路走不通了 于是直接读字节码吧!
  大家可以看到这里的字符串都是混淆过的,每一个都jsr到151去解密
  这段解密代码特点非常明显,一个switch走5条路,给221传不同的解密key,这不就是Zelix KlassMaster的算法吗? 简单的异或而已,轻松写出解密机:public class Verify {
  private static String decrypt(String str) {
  char key[] = new char[] {73,25,85,1,29};
  char arr[] = str.toCharArray();
  for (int i = 0; i < arr.length; i++) {
  arr[i] ^= key[i % 5];
  }
  return new String(arr);
  }
  public static void main (String args[]) {
  System.out.println(decrypt("%x"sdgu4t3#x#`egj"hs.7%m|/7;hp+l&/S t7tn5v:j"}_dx%"));
  }
  }
  里面的5个密钥就是上图bipush的传参,别忘了iconst_1的那个1 解密出来是:larry.lau.javax.swing.plaf.nimbus.NimbusLook:4 其实这里解密出字符串没有什么用处,因为我们已经拿到老版本的源代码了,不过在别的软件逆向分析中可能会非常有用
  0x05 总结&POC
  以下为我修改后的BurpLoader,其中的恶意代码我已经去除,并将修改前的原值输出,大家可以在添加burpsuite jar包后编译运行这段代码package stratburp;
  import burp.StartBurp;
  import java.lang.reflect.Field;
  import java.util.prefs.Preferences;
  import javax.swing.JOptionPane;
  public class startburp
  {
  private static final String[] clzzData = { "burp.ecc", "burp.voc", "burp.jfc",
  "burp.gtc", "burp.zi", "burp.q4c", "burp.pid", "burp.y0b" };
  private static final String[] fieldData = { "b", "b", "c", "c", "c", "b", "c", "c" };
  private static final String errortip = "This program can only run with burpsuite_pro_v1.5.01.jar";
  private static final String[] keys = { "license1", "uG4NTkffOhFN/on7RT1nbw==" };
  public static void main(String[] args)
  {
  try
  {
  for (int i = 0; i < clzzData.length; i++)
  {
  Class clzz = Class.forName(clzzData[i]);
  Field field = clzz.getDeclaredField(fieldData[i]);
  field.setAccessible(true);
  //field.set(null, strData[i]);
  System.out.println(field.get(null));
  }
  Preferences prefs = Preferences.userNodeForPackage(StartBurp.class);
  for (int i = 0; i < keys.length; i++)
  {
  String v = prefs.get(keys[i], null);
  System.out.println(prefs.get(keys[i], null));
  }
  StartBurp.main(args);
  }
  catch (Exception e)
  {
  JOptionPane.showMessageDialog(null, "This program can only run with burpsuite_pro_v1.5.01.jar", "Notice",0);
  }
  }
  }
  其效果如截图所示
  其中前8行输出为之前BurpLoader恶意修改的目标原值(对我的计算机而言),同一台设备运行多少遍都是不变的,后面的key由于我之前运行过BurpLoader因此是恶意修改后的值(但是由于前8行没有修改因此不能通过Burpsuite验证),可见BurpLoader其实是使用了同一个密钥来注册所有不同计算机的,只不过修改并固定了某些参与密钥计算的环境变量而已,这大概就是Burpsuite破解的主要思路了,至于最初能用的license是怎么计算出来的,我们以后再研究
  本文作者:Drops,转载自:http://www.mottoin.com/detail/3651.html

小米新款无线耳机海外发售双降噪,售价489元目前真无线蓝牙耳机除了苹果的AirPods系列热销外,其他品牌也在默默研发自家真无线,包括三星华为小米等手机巨头,而近日,据海外媒体称,小米将海外发布小米真无线蓝牙耳机2。据悉,小三星Galaxy中端机四摄并配备6000mAh电池15W快充三星目前在海外预热GalaxyM31,该产品定位中档机型,目前已经在一些国家和地区开始宣传博取关注度。三星GalaxyM31硬件方面,其搭载自家猎户座Exynos96112。3GhiWALK爱魔AmourAirset体验一款没有短板的ANC主动降噪耳机在谈这款iWALK爱魔AmourAirset使用感受之前,说说之前使用数十款入耳式蓝牙耳机的感受,迷你充电仓携带方便,耳机小巧,不过使用太久明显会感觉有压迫感,而那种可以调节内外气微软折叠屏手机被曝光骁龙855加持两块5。6英寸屏幕折叠屏手机除了三星华为等推出的那几款售价不菲的机器外,PC软件巨头微软也开始布局折叠机市场。近日,就有外媒爆料,微软即将推出双屏智能手机MicrosoftSurfaceDuo。来自四款电磁炉横评只有500元预算,你该买哪款?相信很多人在购买电磁炉会去网上搜集产品信息或者去实体店看一看,而实际买回家后发现不是这里使用有问题就是那里不方便,觉得和产品宣传的不是那么一回事。而身边朋友在家做饭也在使用电磁炉,联发科亮出新天玑1000芯片,暗示将碾压高通骁龙865近日,作为昔日移动处理器的老大联发科宣布了成功研发出最新配备5G功能的Dimensity芯片组,并将其命名为天玑1000。联发科表示,接下来准备与目前高通骁龙865竞争,作为刚刚研入睡困难不妨试试它南卡枕中宝Zzzz骨传导音箱很多人都有佩戴耳机入睡的习惯,前阵子网上就长时间戴耳机有什么危害吗?引发热议,根据专家建议,佩戴入耳式耳机最好不要超过2小时,长时间佩戴有可能造成听力受损耳膜受损以及耳道出血引起不戴尔发布XPS17Intel10代加持RTX2060,窄边框视角今天,戴尔举行了线上2020夏季新品发布会,这次带来的是两款笔记本电脑,其中一款是重新设计的XPS15,另一款是新品XPS17。戴尔XPS17采用第10代英特尔核心处理器和NVID续航再突破!三星Note20将用新技术降低120Hz屏幕功耗从去年开始,手机厂商就开始在手机屏幕下功夫,使用高刷新率屏幕,从60hz到90Hz再到120Hz,不过高刷新率意味着功耗成本增加,而近日,根据外媒消息,三星即将到来的GalaxyN华为新专利公示自主研发超IP68防水级别,有望用于自家旗舰要说防水做得较好的手机品牌,三星索尼排前五不为过,毕竟他们也是有自家的IP68防水旗舰机。而国内如果要做IP68防水机器,成本会很高,利润降低是很多国内厂商不愿做的原因之一。不过近早已内定苹果十三香才是九月的重头戏九月份手机圈也是热闹非凡,不但大家期待已久的iPhone13要发布了,而且还有好几款国产旗舰机也要亮相,虽然现在有几款还没有发布,可是看预热的阵仗,绝对也都是水桶级别。例如,九月一
莱克电气入选2021年度国家级智能制造试点示范工厂近日,工业和信息化部公示了2021年度智能制造试点示范工厂,莱克电气股份有限公司的高效电机智能制造示范工厂项目入选。莱克电气依托新能源汽车家电等应用场景对新一代电机节能高效的需求,二审维持一审判决科大讯飞听书神器APP不构成侵权人民法院报报道(记者周瑞平通讯员王君)科大讯飞股份有限公司(以下简称科大讯飞)开发的听书神器APP根据用户的请求,可以实时将网络作品合成语音供用户收听。有公司发律师函提出,该软件内关于ios15非苹果系耳机连接一开始用的xsmax,升了ios15后我的华为耳机断开重连音量都变被重置到百分之50,开始以为耳机问题,又换了付华为f4,全新的,也是一模一样,只要断开然后重连接,音量就会被重置到特维尔18OS,舒适恒温,室外安作为家居生活必不可缺的家电,热水器在日常生活中占据着重要地位。一个舒服的热水澡,离不开一台合格的热水器,日常洗澡洗脸洗手洗衣服洗菜也都需要它来提供热水。近年来,凭借即开即热,便于安从零开始学pythonpython高级语法python函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可玩游戏用带鱼屏还是曲面屏好?相信不少游戏迷在游戏的时候都曾犹豫过买曲面的还是买带鱼屏。因为带鱼屏的屏幕长的原因能够看到更多的地方。而曲面屏的存在能够让眼睛更加的舒服一点也能起到一点看到更广视角的作用。洗唛安我手机APP能成为学习利器吗?孩子的学习问题一直是很多家长关心的事。近年来,随着移动互联网和多媒体的发展,手机学习成为越来越多孩子和家长的选择。手机学习真的靠谱吗?五花八门的学习APP到底好不好用?记者走访了多看一个人人品从哪方面能看出?第一语言文字是否正能量第二有没有社会公德?第三良心,善心,良知第四?大家可以补充完整啊?请?祈祷祈祷祈祷祈祷玫瑰呲牙握手言行一致,心口如一,凡事能为他人着想。待人接物为人处事面对一研发投入被碾压,市值仅为小米一半董明珠终究还是输给了雷军十亿赌约在2013年第十四届中国经济年度人物颁奖盛典上,小米集团创始人雷军和格力集团董事长董明珠定下了一个为期五年的赌约两者约定五年之后对比格力和小米的营业收入,这在后来也被称为十性能强悍,vivoS12系列搭载天玑1200处理器vivo系列新品发布会实况消息,在性能方面,新机S12系列搭载联发科旗舰处理器天机1200,另外还配有UFS3。1双效内存融合4G技术,读写应用启动速度表现都有明显的提升。vivo发高成!天玑9000灭霸实力尽显,联发科成功树立旗舰标杆近些年在手机芯片领域,联发科可谓是风头无两。进入天玑时代,联发科的技术积累和创新受到了市场的欢迎,而本月全新发布的旗舰芯片天玑9000,则以强势的产品力和抢眼的能效表现,成为业内焦