CLI 를 통한 Exploit-DB 검색

사이버 보안Beginner
지금 연습하기

소개

사이버 보안 분야에서 소프트웨어 취약점을 발견하는 것은 첫 번째 단계일 뿐입니다. 진정한 위험을 파악하기 위해서는 보안 전문가가 발견과 익스플로잇 (공격) 사이의 간극을 메워야 합니다. Exploit Database(Exploit-DB) 는 모의 해킹 전문가와 취약점 연구자를 위해 개발된, 공개된 익스플로잇과 그에 해당하는 취약한 소프트웨어의 CVE 준수 아카이브입니다.

이러한 연결 고리가 중요한 이유는 취약점 발견이 공개된 익스플로잇 자료의 존재 여부, 성숙도, 그리고 필요한 조건에 따라 실질적인 의미가 달라지기 때문입니다. 소프트웨어 버전을 익스플로잇 참조와 매핑하면 단순한 발견을 위험 상황에 대한 맥락으로 전환하는 데 도움이 됩니다.

이번 실습에서는 Exploit-DB 의 공식 명령줄 인터페이스인 searchsploit 사용법을 배웁니다. 로컬 익스플로잇 데이터베이스를 업데이트하고, 특정 소프트웨어 버전을 검색하며, 방대한 결과에서 원하는 정보를 필터링하고, 분석을 위해 익스플로잇 소스 코드를 추출하는 실습을 진행합니다. 이러한 기술은 발견된 서비스를 알려진 공격 벡터와 매핑하는 데 필수적입니다.

Searchsploit 데이터베이스 업데이트

이 단계에서는 로컬에 저장된 Exploit Database 를 최신 상태로 유지하는 방법을 배웁니다.

searchsploit 도구는 로컬에 저장된 익스플로잇 저장소에 의존합니다. 새로운 취약점이 매일 발견되고 공개되기 때문에, 검색을 수행하기 전에 이 데이터베이스를 정기적으로 업데이트하는 것이 매우 중요합니다. 오래된 데이터베이스로 검색하면 조사 중인 소프트웨어에 대해 최근 공개된 익스플로잇을 놓칠 수 있습니다.

익스플로잇 참조를 최신 상태로 유지하는 것은 평가의 기본 위생과 같습니다. 오래된 정보는 잘못된 안도감을 주거나, 반대로 불필요한 긴급함을 유발할 수 있습니다.

데이터베이스를 업데이트하려면 searchsploit 명령에서 제공하는 업데이트 플래그를 사용할 수 있습니다. 터미널에서 다음 명령을 실행하세요:

searchsploit -u

도구가 공식 저장소에서 최신 변경 사항을 가져오고 있음을 나타내는 출력이 표시됩니다. 출력은 다음과 유사하게 나타납니다:

[*] Updating searchsploit...
Already up to date.

이 명령을 실행하면 로컬의 /opt/exploitdb 디렉토리가 Exploit-DB 에서 제공하는 최신 익스플로잇, 셸코드 및 문서와 동기화됩니다.

참고: 업데이트 과정은 특히 exploitdb-papers를 확인할 때 (예: Nothing here (/opt/exploitdb-papers). Starting fresh... 표시) 몇 분 정도 걸릴 수 있습니다. 인내심을 갖고 완료될 때까지 기다려 주세요. 기다리기 어렵다면 Ctrl+C를 눌러 프로세스를 취소하거나, 새로운 터미널 탭을 열어 실습을 계속 진행해도 됩니다. 메인 익스플로잇 데이터베이스가 먼저 업데이트되기 때문입니다.

소프트웨어 버전별 검색

이 단계에서는 특정 소프트웨어 버전에 대한 기본 검색을 수행하는 방법을 배웁니다.

대상 시스템을 스캔할 때 (예: Nmap 사용), 종종 해당 시스템에서 실행 중인 서비스의 정확한 버전을 발견하게 됩니다. 이러한 버전 번호를 searchsploit에 직접 전달하여 관련 익스플로잇을 찾을 수 있습니다. 이 도구는 데이터베이스 내 익스플로잇의 제목과 설명을 검색하여 일치하는 항목을 찾습니다.

이것이 바로 정확한 버전 탐지가 중요한 이유입니다. 소프트웨어 식별이 정확할수록 익스플로잇 상관관계 분석이 더 유용하고 정밀해집니다.

vsftpd 2.3.4를 실행 중인 FTP 서버를 발견했다고 가정해 봅시다. 이는 악명 높은 취약점이 있는 소프트웨어 버전입니다. 이 특정 버전과 관련된 익스플로잇을 검색하려면 소프트웨어 이름과 버전을 인수로 입력하세요:

searchsploit vsftpd 2.3.4

명령어는 익스플로잇 제목과 데이터베이스 내 해당 경로를 보여주는 형식화된 표를 반환합니다. 출력은 다음과 같아야 합니다:

------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                          |  Path
------------------------------------------------------------------------ ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution                               | unix/remote/17491.rb
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit)                  | linux/remote/16362.rb
------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results

검색 결과는 취약점에 대한 간략한 설명 (이 경우 백도어 명령 실행) 과 익스플로잇 코드 파일 경로를 제공합니다. 파일 이름에 포함된 숫자 (예: 17491) 는 고유한 Exploit Database ID(EDB-ID) 입니다.

검색 결과 필터링

이 단계에서는 필터를 사용하여 검색 범위를 좁히는 방법을 배웁니다.

때로는 광범위한 검색어로 인해 수백 개의 결과가 반환되어 필요한 정보를 찾기 어려울 수 있습니다. searchsploit은 출력을 좁히는 데 도움이 되는 여러 플래그를 제공합니다. 가장 유용한 두 가지 플래그는 -t(전체 파일 경로나 설명이 아닌 익스플로잇 제목으로 검색 제한) 와 --exclude(특정 단어가 포함된 결과 제외) 입니다.

Linux 커널에 대한 권한 상승 (Privilege Escalation) 익스플로잇을 찾고 있지만, 일반적으로 접근 권한을 얻는 데 도움이 되지 않는 서비스 거부 (DoS) 익스플로잇은 제외하고 싶다고 가정해 봅시다.

다음 명령을 실행하여 "dos"라는 용어를 제외하고 제목에서 "linux kernel privilege escalation"을 검색하세요:

searchsploit -t linux kernel privilege escalation --exclude="dos"

Linux 커널의 권한 상승에 특화된 익스플로잇 목록이 표시됩니다. 출력은 방대하겠지만, 일반적인 검색보다 훨씬 깔끔할 것입니다:

------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                          |  Path
------------------------------------------------------------------------ ---------------------------------
Linux Kernel - 'BCC' Local Privilege Escalation                         | linux/local/40759.rb
Linux Kernel - 'BPF' Local Privilege Escalation                         | linux/local/40758.rb
Linux Kernel - 'ptrace_traceme' Local Privilege Escalation              | linux/local/47133.c
...
------------------------------------------------------------------------ ---------------------------------

이러한 필터링 기술을 사용하면 특정 시나리오에 필요한 정확한 유형의 익스플로잇을 빠르게 찾아낼 수 있습니다.

익스플로잇 코드 세부 정보 검토

이 단계에서는 실제 익스플로잇 코드를 추출하고 검토하는 방법을 배웁니다.

익스플로잇을 찾는 것은 과정의 일부일 뿐이며, 실행하기 전에 코드를 읽고 이해해야 합니다. 알려지지 않은 익스플로잇을 실행하는 것은 위험할 수 있으며, 제대로 작동하기 위해 특정 수정 (예: 대상 IP 주소나 포트 변경) 이 필요할 수 있습니다.

searchsploit을 사용하면 -m 플래그 뒤에 EDB-ID 를 붙여 현재 작업 디렉토리로 익스플로잇을 쉽게 복사 (미러링) 할 수 있습니다. 2 단계에서 찾은 EDB-ID 17491인 vsftpd 2.3.4 익스플로잇을 추출해 보겠습니다.

다음 명령을 실행하여 ~/project 디렉토리로 익스플로잇을 미러링하세요:

searchsploit -m 17491

파일이 복사되었음을 확인하는 출력이 표시됩니다:

  Exploit: vsftpd 2.3.4 - Backdoor Command Execution
      URL: https://www.exploit-db.com/exploits/17491
     Path: /opt/exploitdb/exploits/unix/remote/17491.rb
    Codes: CVE-2011-2523, OSVDB-73573
 Verified: True
File Type: Ruby script, ASCII text
Copied to: /home/labex/project/17491.rb

이제 17491.rb 파일이 현재 디렉토리에 있으므로 cat과 같은 텍스트 리더나 nano와 같은 편집기를 사용하여 내용을 검토할 수 있습니다. 다음 명령을 실행하여 익스플로잇 코드의 처음 몇 줄을 확인하세요:

head -n 20 17491.rb

출력에는 Metasploit 모듈의 Ruby 소스 코드가 표시되며, 이를 통해 주석을 읽고 취약점 (소스 코드에 남겨진 악성 백도어) 을 이해하며 익스플로잇이 어떻게 이를 트리거하는지 확인할 수 있습니다.

요약

이번 실습에서는 searchsploit을 사용하여 명령줄에서 직접 Exploit Database 를 효과적으로 탐색하는 방법을 배웠습니다. 로컬 데이터베이스를 업데이트하여 최신 취약점 정보를 확보하는 것으로 시작하여, 특정 소프트웨어 버전을 기반으로 타겟 검색을 수행하고 제외 플래그를 사용하여 원치 않는 결과를 필터링하는 방법을 익혔습니다. 마지막으로, 안전한 검토 및 분석을 위해 익스플로잇 소스 코드를 로컬 작업 공간으로 추출하는 실습을 진행했습니다. 이러한 기술은 취약점 평가 및 모의 해킹 워크플로우의 기초가 됩니다.