安卓调试JNI_OnLoad
安卓调试JNI_OnLoad先查看包名,然后以调试的模式启动程序
123./adb shell am monitor # 查看当前活动对象包名(quit结束监控)abd shell am start -D 包名/.入口
然后当我们IDA 打开某个so附加上去之后,程序还是处在等待调试的状态
IDA调试选项选中 Suspend on library load/unload
我们用jdb使程序运行起来
12adb forward tcp:8700 jdwp:<pid> jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
这样如果在JNI_ONLOAD下断点的话,程序就可以断下来了
下面是一个简单的动态注册native的示例
12345678910public class TextJni { static { System.loadLibrary("textjni_lib"); } native int ...
2023强网杯部分逆向题WP
BabyreIDA打开分析,TLS中有反调试,直接patch
来到主函数分析加密算法,主逻辑是个魔改的xtea算法
直接调试取出key和密文,写对应的解密逻辑解密即可
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#include <stdio.h>#include <stdint.h>/* take 64 bits of data in v[0] and v[1] and 128 bits of key[0] - key[3] */void encipher(uint32_t v[2], uint32_t const key[4]) { unsigned int i, j; uint32_t v0 = v[0], v1 = v[1], sum = 0x90508D47; for (i = 0; i < 4; ++i) ...
2023秋招_我的秋招路线
d63ceaad2e2de5f22efd3de5cb231d06495dc39e4352bc2c5d1c1627ac9e6a5a42927d6d0876077f5f113b8ba09ce2841775560f9d64af8186e6c2bf5d6077481d1bc0da37851a7bc824ac00c57fa5ecf360f9f5f15ef23bf8a1870abe7a6def0384cf34bcc76193bedb496686ba167f33f1fa279341c70525372e7bac2023398e39a0aab0d1a81d504725b48519c211127e20c0a6274bd7a5cf564b986a8cdd7146797fdd796abece036388b708b3a3c419327456a3ef802988067133e38bf0fccbc089d6820097b57f49d1ce820bf12560f0da9b9b11a999364b772f8722f6503db14d817b2e76f2c0c92f7b6aa26383433f8d27f54d92e ...
2023秋招_计算机网络准备
计算机网络https://tobebetterjavaer.com/sidebar/sanfene/network.html
基础1.说下计算机网络体系结构OSI七层参考模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
TCP/IP四层:应用层,传输层,网际层,网络接口层
五层模型:应用层,传输层,网络层,物理链路层,物理层
2.说一下每一层对应的网络协议有哪些?应用层:HTTP,DNS,FTP,SMTP,Telnet等
传输层:TCP,UDP
网络层:IP,ICMP
物理链路层:ARP
3.那么数据在各层之间是怎么传输的呢?数据链路层头|网络层头|传输层头|应用层数据
网络综合4.从浏览器地址栏输入 url 到显示主页的过程?DNS解析URL获取IP地址
TCP三次握手建立连接
构造应用层数据包 加 传输层头 加 网络层头 加数据链路层头,发送出去
收到消息,再解包,然后浏览器渲染
TCP四次挥手断开链接
5.说说 DNS 的解析过程?先查看本地浏览器缓存,然后本地DNS服务器,如果都没有,本地DNS服务器向根服务器请求获取顶级域名服务器的IP,然后本地DNS ...
2023秋招_WEB漏洞原理
XSSXSS类型反射型XSS需要有带有payload的URL,当用户点击此URL时,服务器就会返回带有自己的恶意js的HTML网页
不需要将恶意js链接存在服务器上
存储型XSS将恶意js链接存在服务器上,比如,一个博客的主页,名字存在XSS漏洞,输入一个特殊构造的名字,存储在服务器上,当任意用户去访问这个人的主页的时候,就会返回带有恶意JS的HTML
DOM型XSS前面两个都是浏览器返回的HTML中就有恶意的js,DOM型XSS不是,他是在渲染的过程中触发的恶意JS,即服务器返回的HTML是一个正常的HTML,只不过里面的某些JS代码在处理DOM的时候有漏洞
XSS攻击payloadXSS获取cookie一般都是获取cookie
XSS钓鱼XSS除了获取COOKIE,可以从一个信任的网站跳转到另一个网站(前端一模一样),用来钓鱼
XSS蠕虫基本都是存储型XSS,比如个人主页上存放恶意JS,当别人点开这个主页后,恶意的JS也会插入到自己的主页中
XSS防御给Cookie设置 httponly属性,这样JS就拿不到COOKIE了
XSS过滤
CSP白名单的形式
CSRF跨 ...
MAS系列-MDA2
分析样本: 070281b8c1a72893182928c21bf7241a0ad8c95879969d5f58e28d08f1a73b55
收集信息
我们搜集到了以下信息
他是一个 **Microsoft Word 2007+**,所以它是一个zip container
它与特定的IP地址和端口通信:47.93.63.179:7498
它的家族是Metasploit
它可能有代码注入
这个样本可能会会把文件dumps到Windows目录
有嵌入的宏
分析使用zipdump.py分析文件
5(word/vbaProject.bin) 比较可疑,继续分析5
对象3是个宏,也是OLE文件中最大的对象。宏是以压缩的形式存储的,因此在读取其内容之前必须先解压缩
直接SHIFT打开文件,ALT + F11查看宏
分析
这个代码像是Cobalt Strike / Metasploit 生成的代码
调用了CreateRemoteProcess(), VirtualAllocEx()和WriteProcessMemory() 证实了 ...
MAS系列-MDA1
分析的样本: 59ed41388826fed419cc3b18d28707491a4fa51309935c4fa016e53c6f2f94bc
下载样本和收集信息
分析恶意文档通过malwoverview的输出,可以看到恶意文档可能会释放出exe,然后提升权限,HOOK,进程注入等操作。
使用olevba和oleid来收集更多的信息
从这2个图可以分析出一些事实
当MS Word被执行的时候,一些代码被执行了
一个文件可能被写入
maldoc可能打开了一个文件
VBA宏负责整个活动
使用OLEDUMP分析
发现,有3个宏,16,17,18
在第11处有大量的数据,猜测是一个VBA resources,可能是加密的资源
从上面的输出中可以观察到一些细节
很显然,代码被混淆了
split函数返回一个一维数组,它处理UserForm1中的内容,这些内容被分为了4部分,UserForm1内容似乎用!字符分割
UserForm2正在进行MoveFile操作
Winmgmt服务是在LocalSystem帐户下的svchost进程内操作的WMI服务,用于执行User ...
MAS系列1
MAS系列网址:https://exploitreversing.com/
分析样本哈希(SHA256):8ff43b6ddf6243bd5ee073f9987920fa223809f589d151d7e438fd8cc08ce292
脱壳相关概念加壳的动机
便于逃避AV的检测
由于需要规避许多反分析技术(反调试器和反vm技巧),因此很难对其进行动态脱壳
整个恶意软件或只有脱壳的代码可是多态的
大多数恶意软件使用自定义的壳,使代码在安全防御监控下无法检测到。另外还有一些特殊的加壳程序(也称为保护程序),例如Themida,Arxan, VMProtect, Agile.NET和许多其他的会虚拟化指令并实施各种反取证和混淆技术的加壳程序,下面是他们的一些特征
已用于64位二进制文件
IAT被去除或者最多导入一个函数
大多数字符串被加密
内存完整性受到检查和保护,因此无法从内存中dump出原始原始程序,因为原始指令并没有解码
指令被虚拟化,并且有的转换为RISC指令
虚拟指令在内存中被加密
使用基于堆栈的混淆,使用静态的方法处理虚拟化指令是非常困难的
大多数虚拟指令是多态的,因此 ...
《Mastering Malware Analysis》第五章
Mastering Malware Analysis Chapter 5
Inspecting Process Injection and API Hooking
我们将深入研究各种进程注入技术,包括DLL注入和傀儡进程(Stuxnet引入的一种先进技术),并解释如何处理它们。然后将学习API hook, IAT hook和其他的hook技术
您将学习如何分析其他进程中注入的代码,通过内存取证检测它,检测不同类型的API钩子技术,并分析它们以检测**Man-in-the-Browser(MiTB)**攻击
为了使学习无缝衔接,这个章节被划分为下面几个主要的部分
理解进程注入
DLL注入
深挖进程注入
代码注入的动态分析
针对进程注入的内存取证技术
理解API hook
探索IAT hook
理解进程注入什么是进程注入?进程注入是一组技术,允许您将代码块或整个动态链接库(dll)注入到另一个进程的内存中,并执行该代码。
在Windows 7及以上版本中,不允许向核心Windows进程(如explorer.exe)或其他用户的进程中执行注入。然而,它仍然将代码注入当前用户的浏览器和其 ...
《Mastering Malware Analysis》第四章
Mastering Malware Analysis Chapter 4
识别壳
使用PEID等工具
看节的名字,比如.UPX0等
看入口点是不是不在第一个节,壳的一般入口点都在最后几个节中,第一个节的属性通常是READ| WRITE
看导入表的大小,在加了壳的程序中,导入表一般是非常的小的。
自动的脱壳
官方脱壳工具,比如UPX的,但是一般攻击者会修改几个模数使官方的工具无法脱壳,比如,修改了节表名,.UPX0改为其他的名字
OllyScript,可以对OllyScript写脚本啥的
通用的脱壳机:比如QuickUnpack(感觉要淘汰了,这个玩意
仿真(比如unipacker,一个基于Unicorn的引擎)
内存dumps
手动脱壳手动脱壳和前面提到的自动脱壳的技术主要的区别是 何时进行内存dump以及dump之后需要干什么。如果我们仅仅执行原始的样本,dump内存,然后希望unpacked的模块也可以获得的话,我们将要面对多个问题。
运行起来后IAT表都填了真实的数据,需要恢复IAT表,甚至可能处理重定位表等问题。
哈希值与原始样本不同
原始的loader可能解包样本到a ...