加载中…
个人资料
elecs
elecs
  • 博客等级:
  • 博客积分:0
  • 博客访问:53,097
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

学习seccomp

(2018-06-04 15:57:20)
标签:

seccomp

分类: 信息安全

pwn,用seccomp做沙箱保护很常见。有时候seccomp后面会跟一个结构体,趁此机会学习一把。

1、 简介

seccomp是一种内核中的安全机制,正常情况下,程序可以使用所有的syscall,这是不安全

,比如劫持程序流后通过execvesyscallgetshell.通过seccomp我们可以在程序中禁用掉某些syscall,这样就算劫持了程序流也只能调用部分的syscall.

2、 使用seccomp

首先,调用seccomp的程序我们是能够直接运行的,但是我们不能直接编写调用seccomp的程序,因为我们缺少相应的头文件.通过apt安装

sudo apt install libseccomp-dev libseccomp2 seccomp

这样就有头文件了

# veritas @ ubuntu in /usr/include

$ find . -name seccomp.h

./seccomp.h

./linux/seccomp.h

先写一个简单的程序调用一下syscall,简单的输出后,会弹一个shell

//gcc -g simple_syscall.c -o simple_syscall

#include

int main(void){

         char * filename = "/bin/sh";

         char * argv[] = {"/bin/sh",NULL};

         char * envp[] = {NULL};

         write(1,"i will give you a shell\n",24);

         syscall(59,filename,argv,envp);//execve

         return 0;

}

现在我们通过seccomp禁用掉execvesyscall

//gcc -g simple_syscall_seccomp.c -o simple_syscall_seccomp -lseccomp

#include

#include

#include

int main(void){

         scmp_filter_ctx ctx;

         ctx = seccomp_init(SCMP_ACT_ALLOW);

         seccomp_rule_add(ctx, SCMP_ACT_KILL, SCMP_SYS(execve), 0);

         seccomp_load(ctx);

         char * filename = "/bin/sh";

         char * argv[] = {"/bin/sh",NULL};

         char * envp[] = {NULL};

         write(1,"i will give you a shell\n",24);

         syscall(59,filename,argv,envp);//execve

         return 0;

}

运行结果:

学习seccomp

稍微解释一下上面几个函数

 

ctxFilter context/handle,其中typedef void *scmp_filter_ctx;

seccomp_init是初始化的过滤状态,这里用的是SCMP_ACT_ALLOW,表示默认允许所有的syscacll.如果初始化状态为SCMP_ACT_KILL,则表示默认不允许所有的syscall

 

3How to reverse

可以使用现成的工具

https://github.com/david942j/seccomp-tools

 

我们测测看雪2017CTF9 Silence_Server,用seccomp-tools得到以下结果

学习seccomp

arch_x86_64下,只允许read, open, close, stat, fstat, lstat, poll, lseek, brk, execve


0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有