欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

被指向中国服务器提供数据,Mac App Store下架排名第一的付费安软

来源:本站整理 作者:佚名 时间:2018-09-11 TAG: 我要投稿
/Applications/Chess.app(1396-06-15 01:20:21 +0000)
/Applications/Photo Booth.app(1396-04-25 01:50:31 +0000)
/Applications/Adware Doctor.app(1397-03-20 09:59:27 +0000)
....
===process2===
processID                processName             userID                  userName                command
1759                     bash                    501                     user                    /bin/bash
1758                     login                   0                       root                    /usr/bin/login
1730                     silhouette              501                     user                    /usr/libexec/silhouette
1709                     mdwrite                 501                     user                    /System/Library/Frame
....
虽然Adware Doctor获得了通过com.apple.security.files.user-selected.read-write权限和明确的用户批准来枚举用户文件,但根据沙箱设计,它仍然无法列出其他正在运行的进程。
回想一下collectPSCommonInfoToFile,调用以下两种方法:
[r14 appendString:@“\ n === process === \ n”];
rbx = [[ACECommon collectProcessList] retain];
...
[r14 appendString:@“\ n === process2 === \ n”];
rbx = [[ACECommon collectProcessList2] retain];
方法collectProcessList尝试通过内置的ps命令枚举所有正在运行的进程:
(lldb) po $rdi
(lldb) po [$rdi launchPath]
/bin/sh
(lldb) po [$rdi arguments]
(
-c,
ps -e -c -o "pid uid user args"
)
被macOS应用程序沙箱阻止(拒绝),因为枚举正在运行的进程(来自沙箱)是“禁忌”:
/bin/sh: /bin/ps: Operation not permitted
Adware Doctor使用了collectProcessList2方法:
+(void *)collectProcessList2
{
...
rax = sub_1000519ad(&var_1068, &var_10A0,
           @"processID\t\t\t processName\t\t\t userID\t\t\t userName\t\t\t command\n", rcx, r8, r9);
...
var_1070 = var_1068;
  do {
    ...
   proc_pidpath(*(int32_t *)(r14 - 0xcb), &var_1030, 0x1000);
  } while (var_1088 > rax);
}
调用sub_1000519ad然后迭代该函数返回的一些列表,调用proc_pidpath。sub_1000519ad返回一个进程ID列表:
000000010007df90         dd         0x00000001  ;CTL_KERN
000000010007df94         dd         0x0000000e   ;KERN_PROC
000000010007df98         dd         0x00000000  ;KERN_PROC_ALL
int sub_1000519ad(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5)
{
    ...
   rax = sysctl(0x10007df90, 0x3, 0x0, r13, 0x0, 0x0);
   if ((r12 ^ rax) == 0x1){
      __assert_rtn("GetBSDProcessList",
       "/Users/build1/Browser-Sweeper/src/Browser Sweeper/Pods/PodACE/Engine/ACECommon.m", ...
    }
    rbx = malloc(0x0);

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载