首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hack ELF Loader:用户态execve

下的loader:用户态execve。...研究用户态execve的实现,起初是从攻击的方向去思考的,在linux主机安全中,使用shell命令进行攻击是非常常见的场景,无论是横向移动,还是种马,很难不应用shell命令。...在之前的文章中,无"命令"反弹shell-逃逸基于execve的命令监控(上) 分享过关于shell命令的各种监控方式,其中最难绕过的是内核态的execve监控。...[eauldvj8mz.png] 我的选择是抛弃execve系统调用来执行命令,而是思考自己实现用户态execve,这样就可以彻底摆脱命令监控,如果再延展一下,还会有更深层次的操作。...二.How:如何设计linux elf loader how 用户态execve 是仿照linux内核中execve syscall的原理 ,在应用层实现程序的加载和运行,如果做过windows pe

2.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

反弹shell-逃逸基于execve的命令监控(上)

linux中,启动外部进程,是通过execve系统调用进行创建的,我们使用strace 打印一下在bash中启动ls的系统调用,第一句就是通过execve启动ls。 ?...但是我们在开发linux程序的时候,执行系统命令,并没有直接使用execve系统调用,这是因为libc/glibc库对execve系统调用封装成了函数,方便我们调用。...方法2: glibc/libc是对linux系统调用(syscall)的封装,我们使用它是为了简化对系统调用的使用,其实我们可以不用它,直接使用汇编 sysenter/int 0x80指令调用execve...四.新方法-无"命令"反弹shell 在已知的绕过方法中,通过shellcode方式绕过内核态的execve监控,算是相对优雅的方式了,我比较喜欢这种,但是这种方式又太麻烦,linux的命令我都要重写成...其实我的需求很简单: 我既想要linux命令原有的功能,又不想用execve syscall的方式启动。 想了想,怎么办呢? 暂时不写了,删了一次,有点敏感,还望见谅 ?

3K20

【Android 逆向】ART 函数抽取加壳 ⑤ ( unistd.h#execve 函数分析 | 使用自定义的 myexecve 函数替换 libc.so#execve 函数 )

文章目录 一、bionic/libc/include/unistd.h#execve 函数分析 二、使用自定义的 myexecve 函数替换 libc.so#execve 函数 在 【Android...libc.so#execve 函数 ; 一、bionic/libc/include/unistd.h#execve 函数分析 ---- libc.so#execve 函数 定义在 Android 源码的...函数在 libc.so 的地址 , uint32_t new_addr 参数是自定义替换 execve 函数执行的函数地址 , uint32_t **proto_addr 参数是 execve 原函数的地址..., 就退出 ; 不需要拦截的 , 直接调用原函数执行 ; 源码示例 : // 用于接收 Android 自带的 execve 函数 int (*android_execve)(const char *...__file, char *const *__argv, char *const *__envp); // 自定义的 execve 函数 , 用于替换 Android 自带的 execve 函数 //

34320

两个主题:躲避execve与分析proc目录

躲避execve,是在原来的文章的基础上补充一个小思路,分析/proc/目录 是为了下一篇讲解内存中修改函数做准备,要让大家提前知道这回事。...躲避execve的小思路 在之前文章中,我讲解过各种躲避execve监控的方法,如果有朋友没看到过,可以点下面文章链接熟悉一下: 无"命令"反弹shell-逃逸基于execve的命令监控(上) linux...无文件执行— fexecve 揭秘 本文的思路,类似文件复制重命名,躲避execve监控的关键点在于创建软链接,通过创建软链接的方式来混淆命令执行的路径。...由于execve执行软链接,会自动执行目标文件,不会对软链接进行转换,从而实现了隐藏。 不要以为这就结束了!!!.../man-pages/man5/proc.5.html https://github.com/NanXiao/gnu-linux-proc-pid-intro

1.5K30

Linux进程启动过程分析do_execve(可执行程序的加载和运行)---Linux进程的管理与调度(十一)

execve加载可执行程序的过程 内核中实际执行execv()或execve()系统调用的程序是do_execve(),这个函数先打开目标映像文件,并从目标文件的头部(第一个字节开始)读入若干(当前Linux...v=4.5#L1628 更早期实现linux-2.4 linux-3.18引入execveat之前do_execve实现 linux-3.19~至今引入execveat之后do_execve实现 do_execveat...程序的加载do_execve_common和do_execveat_common 早期linux-2.4中直接由do_execve实现程序的加载和运行 linux-3.18引入execveat之前...do_execve调用do_execve_common来完成程序的加载和运行 linux-3.19~至今引入execveat之后do_execve调用do_execveat_common来完成程序的加载和运行...do_execve则是调用do_execveat_common实现的,依次执行以下操作: 调用unshare_files()为进程复制一份文件表 调用kzalloc()分配一份struct linux_binprm

3.7K31

无命令反弹shell-逃逸基于execve的命令监控(上)

linux中,启动外部进程,是通过execve系统调用进行创建的,我们使用strace 打印一下在bash中启动ls的系统调用,第一句就是通过execve启动ls。 ?...但是我们在开发linux程序的时候,执行系统命令,并没有直接使用execve系统调用,这是因为libc/glibc库对execve系统调用封装成了函数,方便我们调用。...方法2: glibc/libc是对linux系统调用(syscall)的封装,我们使用它是为了简化对系统调用的使用,其实我们可以不用它,直接使用汇编 sysenter/int 0x80指令调用execve...四.新方法-无"命令"反弹shell 在已知的绕过方法中,通过shellcode方式绕过内核态的execve监控,算是相对优雅的方式了,我比较喜欢这种,但是这种方式又太麻烦,linux的命令我都要重写成...其实我的需求很简单: 我既想要linux命令原有的功能,又不想用execve syscall的方式启动。 想了想,为什么不能将linux 命令直接当成shellcode来执行呢?

1.5K20
领券