개발일기/이슈 로그

[이슈로그] Alpine Linux에서 Nessus 다운로드 1 - 사건의 발단

ignuy 2024. 9. 9.

취약점 분석 & Nessus란?

취약점 분석이란 타겟 시스템에 공격(Exploitation)을 수행하기 전 타겟 시스템의 취약점에 대한 정보를 얻어내는 과정.

Penetration Test Phases

  • 정보 수집(Reconnaissance) : 타겟에 대한 예비 데이터나 정보를 수집하는 것
  • 스캐닝(Scanning) : 실제 툴을 사용하여 타겟에 대해 더욱 자세한 정보를 얻고자 하는 것.
  • 공격(Exploitation) : 타겟으로부터 데이터를 뽑아내거나 다른 타겟을 공격하기 위해 그 장치를 이용하는 등 네트워크 장치의 주도권을 빼앗아 오는 것.
  • 후속 공격(Post-Exploitation) : 다음 사용을 위해 공격을 시행했던 장치의 주도권을 유지하거나 장치의 유용성을 판단하는 것.
  • 흔적 지우기(Covering Tracks) : 공격자는 자신의 공격 흔적을 지워 호스트 네트워크 관리자로부터 들키지 않도록 한다.

Nessus

Nessus는 가장 유명한 취약점 분석 툴 중 하나로 개인 사용자가 무료로 사용할 수 있는 Nessus Essentials을 활용해 볼 것이다.

Nesus는 간단하면서도 강력한 툴이다. 아래 몇가지 규칙안에서 자유롭게 사용가능하다.

  1. Test할 환경과 Nessus 실행 환경이 같은 네트워크 상에 있어야 합니다.
  2. 무료 버전인 Essential의 경우 16개의 IP에 대해 검사를 진행할 수 있습니다.
  3. 윈도우, 맥, Linux 계열 OS 등 다양한 운영 체제를 지원한다.

이 밖에도 Guide 문서에 친절히 설명되어 있으니 Nessus 가이드라인을 참고해 주길 바란다.

사건의 발단

여러 OS를 지원하지만 현재 업무에서 사용하고 있는 Alpine Linux 환경은 공식 지원이 없어 보인다. 이 개발 일지는 위 단순한 한 문장에서 시작한 고민의 흔적이다. 이번 포스팅에서 문제를 제기하고 다음 포스팅에 구체적인 트러블 슈팅 과정을 적어보겠다.

Alpine Linux 미지원

위에 1번 규칙(”Test할 환경과 Nessus 실행 환경이 같은 네트워크 상에 있어야 한다”)으로 망이 분리되어 있는 테스트 장비에 Nessus를 돌려야 하는 상황이 문제였다. 해당 테스트 장비의 OS는 Alpine Linux 3.20 환경이다. 3.20 환경은 Alpine Linux의 가장 최신 릴리즈이다.

https://www.tenable.com/downloads

위 다운로드에서 “Tenable Nessus”를 선택해보면 다운로드할 Nessus의 Version과 Platform을 선택할 수 있다. platform에서는 아무리 휠을 돌려도 Alpine Linux를 찾을 수 없다. 내가 편하게 업무를 수행할 수 있는 상황은 딱 저 다운로드 사이트를 찾은 것까지였다.

Alpine Linux와 .deb or .rpm

어쩔 수 없다. 울며 겨자먹기로 .deb나 .rpm을 다운로드하고 우회해서 디패키징해야 한다.

리눅스를 다루어보았던 사람이라면 .deb 형식과 .rpm 형식에 익숙할 것이다. Debian 계열(Debian, Ubuntu, Linux Mint 등)에서 사용하는 .deb 방식과 Red Hat 계열(Red hat, Fedora, CentOS)에서 사용하는 .rpm 방식은 리눅스 배포판의 대표적인 패키징 방식이다. 안타깝게도 Alpine Linux는 이 대표적인 두 가지 패키징 방식을 바로 해제할 수 있는 방법이 없다.

Musl vs glibc

여기서 끝이 아니다. 대부분의 리눅스 배포판에서는 시스템의 Standard C Library로 glibc를 사용한다. 우분투의 apt, 레드햇의 yum으로 라이브러리 패키지를 설치할 때, 바로 이 glibc와 동적으로 링크되며 활용가능한 환경이 구성되는 구조이다. 또한 glibc는 GNU Lesser General Public License를 사용한다.

반면에 내가 사용하는 Alpine Linux 환경의 Standard C Library는 musl이다. musl(머슬)은 MIT 라이선스로 배포되는 리눅스 표준 C 라이브러리로 glibc가 동적 링크를 사용하는 반면, musl은 정적 링크를 사용하여 POSIX 표준을 준수하는 표준 C 라이브러리를 구현하는 것을 목표로 한다. 또한, 리눅스, BSD, glibc의 비표준 기능도 구현하고 있다.

시작해보자.

자 이제 위에 언급한 충돌을 해결하는 과정을 시작해보겠다.

댓글