DLL劫持漏洞详解

1.DLL是什么

DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。

1.静态调用方式:由编译系统完成对 DLL 的加载和应用程序结束时 DLL 卸载的编码(如还有其它程序使用该 DLL,则 Windows 对 DLL 的应用记录减1,直到所有相关程序都结束对该 DLL 的使用时才释放它,简单实用,但不够灵活,只能满足一般要求。

2.动态调用方式:是由编程者用 API 函数加载和卸载 DLL 来达到调用 DLL 的目的,使用上较复杂,但能更加有效地使用内存,是编制大型应用程序时的重要方式。


objection 使用详解

简介

objection是一个基于Frida的动态的移动测试工具包,可以帮助我们来进行应用程序安全评估。

主要由以下三个组件组成

1.Frida-Gadget,以嵌入式模式运行应用,通过objection自己的api方法去调用frda执行我们想要的命令

2.objeciton本身是由python编写的可以通过python实现一个交互式shell进行命令的加载和使用,以此来调用objection

3.objection进行hook时会通过TypeScript独立生成一个agent.js文件,这样可以在使用中可以去直接调用所有的功能

objection.png


SSTI模版注入学习

模版引擎

模版引擎(这里特指用于Web开发的模版引擎)是为了使用户界面与业务数据(内容)分离而产生的,他可以生成特定格式的文档,利用模版引擎来生成前端的html代码,模版引擎会提供一套生成html代码的程序,然后只需要获取用户的数据,然后放到渲染函数里,然后生成模版+用户数据的前端html页面,然后反馈给浏览器,呈现在用户面前。

模版引擎也会提供沙箱机制来进行漏洞防范,但是可以用沙箱逃逸技术来进行绕过。

SSTI(模版注入)

SSTI就是服务器端模版注入(Server-Side Template Injection)

当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的MVC模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给Vier视图层,经过模版渲染展示给 用户。

漏洞成因就是服务端接收了用户的恶意输入以后,未进过任何处理就将其作为Web应用模版的一部分,模版引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模版的语句,因而可能导致了敏感信息泄露、代码执行、GetShell等问题。其影响范围主要取决于模版引擎的复杂性。

凡是使用模版的地方都可能会出现SSTI的问题,SSTI不属于任何一种语言,沙盒绕过也不是,沙盒绕过只是由于模版引擎发现了很大的安全漏洞,然后模版引擎设计出来的一种防护机制,不允许使用没有定义或者声明的模块,这适用于所有的模块引擎。

附表

image-20220120174838082


Frida Hook 总结

Frida 常用操作总结

Frida环境

https://github.com/frida/frida

Pyenv

python全版本随机切换,这里提供macOS上的配置方法

Frida安装

如果直接按下述安装则会直接安装frida和frida-tools的最新版本。

pip install frida-tools
frida --version
frida-ps --version

我们也可以自由安装旧版本的frida,例如12.8.0

pyenv install 3.7.7
pyenv local 3.7.7
pip install frida==12.8.0
pip install frida-tools==5.3.0

安装objection

pip install objection
objection -h

APP测试常见问题总结

平常在进行APP测试的时候发现存在了很多问题,现在总结记录一下对应的知识,都在这遍文章下记录更新,老规矩先放一张图

image-20211206111758936


CobaltSrike Shellcode分析

首先我们来看一张流程图

image-20211123201045600

首先打开IDA进行查看

进入主函数,主要看sub_401840()函数进行查看

image-20211112185819017

进入函数发现,首先获取系统时间戳,然后拼接字符串和创建线程通过管道读取shellcode,最后执行shellcode

image-20211114141830161


CobaltStrike二开环境初探

前言

我们使用CobaltStrike的时候,进行性的需要进行二次开发,使其对应的功能更加丰富,更加方便我们团队联合进行渗透的稳定性和隐蔽性。

2

反编译

IntelliJ IDEA 自带了一个反编译java的工具,有时候我们需要对 cobaltstrike 的整个 jar 包进行反编译,使用这个 IntelliJ IDEA 双击之类的反编译时要是对整个源码层面进行搜索并不是很方便,可使用其自带的反编译工具,可以做到批量的整个反编译。

这里先在 IntelliJ IDEA 安装目录找到 java-decompiler.jar 拷贝到一个准备好的目录,并且新建两个文件,一个 cs_bin 里面放未反编译的 cobaltstrike 再建一个 cs_src 文件,这个是空文件,是为了之后放反编译后的 cobaltstrike


Cobalt Strike特征隐藏与流量分析

Cobalt Strike简介

Cobalt Strike is software for Adversary Simulations and Red Team Operations. Cobalt Strike 简称CS, A-team详细介绍使用网址。CS是一款优秀的后渗透工具,可以在获取主机权限后进行长久权限维持,快速进行内网提权,凭据导出等。在后渗透中如果未修改特征,容易被流量审计设备监控,被蓝队溯源。

Cobalt Strike 是一个为对手模拟和红队行动而设计的平台,主要用于执行有目标的攻击和模拟高级威胁 者的后渗透行动。本章中会概述 Cobalt Strike 的功能集和相关的攻击流程。在本手册的剩余部分中会 详细的讨论这些功能。