[Cuckoo SandBox]注入原理篇
1.LoadExe
接python版本

通过调用LoadExe去加载Dll进行注入
所以先看LoadExe 加载器的功能吧

通过python管道接收到 processID,ThreadID,路径 ,然后就开始搞事情了注入了
接收原理 管道具有传递命令行参数专递的作用,利用其进程间通信的功能,通过命令行传进来,不废话 开始了


先调用这几个函数 打开对方的进程,线程空间,

然后把加载Dll LoadLdrDll的函数地址,Dll路径写到对方进程空间
构建ShellCode

为什么要用汇编呢,应该你是在他人的电脑上调用,模块地址什么的都不一样,想实现的功能的从基层自己构建。然后QueueUserAPC
把ShellCode插入到APC队列,使其调用。ShellCode的功能就是LoadLibray(咱的Dll)并执行
Ok,LoadExe完美完成任务,进入Dll注入
2 Dll注入原理
Dll首先隐藏peb 不让对方发现自己

先说一下得到peb的方法吧

/__readfsdword是按照dword大小返回fs寄存器中指定偏移量的值
所以关键还是看fs寄存器是干什么的
那么现在看这篇博客的介绍
http://blog.csdn.net/misterliwei/article/details/4391580
代码运行在 RING0 (系统地址空间)和 RING3 (用户地址空间)时, FS 段寄存器分别指向 GDT( 全局描述符表 ) 中不同段
不说复杂的 直接windbg看结构就知道了
先看32位的TEB 0x30处就是PEB的地址
nt!_TEB
+0x000 NtTib : _NT_TIB
+0x000 ExceptionList : Ptr32
+0x004 StackBase : Ptr32
+0x008 StackLimit : Ptr32
+0x00c SubSystemTib : Ptr32
+0x010 FiberData : Ptr32
+0x010 Version : Uint4B
+0x014 ArbitraryUserPointer : Ptr32
+0x018 Self : Ptr32 <——
+0x01c EnvironmentPointer : Ptr32
+0x020 ClientId : _CLIENT_ID
+0x000 UniqueProcess : Ptr32
+0x004 UniqueThread : Ptr32
+0x028 ActiveRpcHandle : Ptr32
+0x02c ThreadLocalStoragePointer : Ptr32
+0x030 ProcessEnvironmentBlock : Ptr32 < ——
+0x034 LastErrorValue : Uint4B
+0x038 CountOfOwnedCriticalSections : Uint4B
+0x03c CsrClientThread : Ptr32
+0x040 Win32ThreadInfo : Ptr32
……
同样 64位的地址为0x60 所以上面代码原因很清楚了

接下来就是注入了

先修改g_Hooks代码属性,等下说
继续看代码,
创建线程快照,将所有的线程挂起,执行注入,因为挂起,sleep这种等待或等待函数
会触发APC队列,进而执行我们的Dll
g_Hooks如下

回顾下宏的作用 就是自己定义的东西能代表一个具体的东西
所以这个宏我理解为 使用后面的自己构造的东西 会调用前面的模块和函数
就是两者等价调用

接下来 开始注入, 后面一大串相当与自己构造的指令,比如 jmp ,call,push指令

后面根据前面的模块名和函数名得到函数地址开始钩
先遍历地址,把函数调用 调到其他函数的地址部分全都跳过
防止地址调到其他模块去 不易操作
然后就是 内存地址属性 申请内存上
CreateHookTrampoline()将原先函数各种直接,间接跳转的指令保存,
先将其跳到我们申请的地址空间,
然后在我们的地址空间 构建要操作 跳转函数的地址 ,并在执行完我们的函数后,回到程序原先调用的地方。Hook链实现的中途插入调用我们注入的函数

Dll的其他部分

这个宏就是 跟原先函数参数一模一样自己构造的函数,利用宏 把原模块的相应参数传进来
然后实现我们想注入的功能,这里输出通知对方看见也是使用的进程间通信的管道
,Old_NtCreateUserProcess然后调用原先的函数。注入成功
[Cuckoo SandBox]注入原理篇的更多相关文章
- 讲sql注入原理的 这篇不错(有空可以看看)
我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 【串线篇】spring泛型依赖注入原理
spring泛型依赖注入原理 不管三七二十一 servlet :加注解@servlet service:加注解@service dao:加注解@Repository 这相当于在容器中注册这些个类
- 十种MYSQL显错注入原理讲解(二)
上一篇讲过,三种MYSQL显错注入原理.下面我继续讲解. 1.geometrycollection() and geometrycollection((select * from(select * f ...
- SQL注入原理
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一 部分程序员在编写代码的时候,没有对用户输入数据的合法性 ...
- sql注入--双查询报错注入原理探索
目录 双查询报错注入原理探索 part 1 场景复现 part 2 形成原因 part 3 报错原理 part 4 探索小结 双查询报错注入原理探索 上一篇讲了双查询报错查询注入,后又参考了一些博客, ...
- 管中窥豹——框架下的SQL注入 Java篇
管中窥豹--框架下的SQL注入 Java篇 背景 SQL注入漏洞应该算是很有年代感的漏洞了,但是现在依然活跃在各大漏洞榜单中,究其原因还是数据和代码的问题. SQL 语句在DBMS系统中作为表达式被解 ...
- SQL注入原理及代码分析(一)
前言 我们都知道,学安全,懂SQL注入是重中之重,因为即使是现在SQL注入漏洞依然存在,只是相对于之前现在挖SQL注入变的困难了.而且知识点比较多,所以在这里总结一下.通过构造有缺陷的代码,来理解常见 ...
- SQL注入原理及代码分析(二)
前言 上一篇文章中,对union注入.报错注入.布尔盲注等进行了分析,接下来这篇文章,会对堆叠注入.宽字节注入.cookie注入等进行分析.第一篇文章地址:SQL注入原理及代码分析(一) 如果想要了解 ...
- Cesium原理篇:5最长的一帧之影像
如果把地球比做一个人,地形就相当于这个人的骨骼,而影像就相当于这个人的外表了.之前的几个系列,我们全面的介绍了Cesium的地形内容,详见: Cesium原理篇:1最长的一帧之渲染调度 Cesium原 ...
随机推荐
- vtk-py求3d模型表面积
模型格式:.obj 环境:python3.6+vtk7.1 vtk版: import vtk filename = "XXXX.obj" reader = vtk.vtkOBJRe ...
- 非maven项目 idea project structure
原文链接:https://www.cnblogs.com/jajian/p/8081640.html 最近接手非maven项目,需要熟悉idea的project structure,以解决出现的环境报 ...
- window.performance
利用window.performance查看网页性能 一般我们可以通过浏览器的调试工具-网络面板,或者代理工具查看网页加载过程中的各个阶段的耗时.而利用window.performance属性则可以获 ...
- vim 常用配置项
#设置行号set nu #设置下划线 set cursorline #设置自动锁紧 set autoindent #设置shift空格 set shiftwidth=4 #设置c 风格缩进 set c ...
- Linux多线程及线程同步简单实例
一.多线程基本概念 1. 线程的基本概念 ① 线程就是轻量级的进程 ②线程和创建他的进程共享代码段.数据段 ③线程拥有自己的栈 2. 在实际应用中,多个线程往往会访问同一数据或资源,为避免线程之间相互 ...
- Java 目录和文件的复制
1.复制一个目录及其子目录.文件到另外一个目录 //复制一个目录及其子目录.文件到另外一个目录 public void copyFolder(File src, File dest) throws I ...
- IKVM:java代码c#调用
在工作中遇到对接java接口,涉及到java加密或签名问题,.net无法实.就将java代码编辑为dll给.net调用 注:这里只做简单java代码处理,不涉及到复杂的java包 java文件处理: ...
- tail -f 实时跟踪一个日志文件的输出内容
tail -f 实时跟踪一个日志文件的输出内容 http://hittyt.iteye.com/blog/1927026 https://blog.csdn.net/mengxianhua/arti ...
- my.资料收集
1.平民打书想上个高级反击,高级反击会掉哪个呢[梦幻西游手游吧]_百度贴吧.html http://tieba.baidu.com/p/5292257591?lp=5028&mo_device ...
- python 16 进程和线程
进程和线程 很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统. 什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务. ...