리눅스 환경에서의 익스플로잇과 취약점 탐색을 통한 사이버 공격 실습과 분석

들어가며..

이번 글에서는 리눅스 환경에서의 사이버 공격이 어떻게 가능하며, 실제 실습을 통해 어떤 방식으로 공격이 이뤄지는지 살펴보고자 한다.



리눅스와 사이버 공격

리눅스는 오랜 기간 동안 고성능과 안전성을 바탕으로 서버, 클라우드, IoT 등 다양한 환경에서 핵심 운영체제로 자리 잡아왔다.
특히 개방성과 유연성, 그리고 강력한 권한 제어 시스템 덕분에 보안에 강한 운영체제로 여겨지기도 한다.
하지만 현실적으로는 리눅스 시스템 또한 수많은 보안 위협에 노출되어 있으며, 특히 관리자의 부주의나 인간의 심리를 노리는 공격에 대해선 여전히 취약한 면이 존재한다.
오늘은 그중 익스플로잇을 이용한 사이버 공격 기법에 대해 정리할 것이다.
리눅스 시스템은 웹 서버, 데이터베이스, 인증 서버 등 핵심 인프라가 구동되는 기반 환경이므로, 이곳에서 발생하는 침해는 단순한 사용자 피해를 넘어 전체 시스템과 조직 전체의 정보 유출로 이어질 수 있다.


메타익스플로잇을 이용한 리눅스에서의 활용 예시

우선 모의침투 연습을 위해 vmware에 metasploitable2를 설치한다. metasploitable2는
metasploit에서 모의 침투를 위해 의도적으로 취약하게 만든 가상머신이다.
metasploitable2 설치 후 머신의 터미널을 연다.

1
ifconfig

위 명령어는 활성화된 네트워크 인터페이스의 IP 주소, 상태 등을 출력하는 명령어이다.
이를 실행 하면 inet, netmask 등 여러 단어들이 출력되는데, inet은 IP 주소를 나타내고, netmask는 서브넷 마스크를 나타낸다. 이후 metasploit을 실행 후 머신의 터미널을 연다.
그림 1.

그림 1.

실행하면 이와 같은 것들이 나오는데, 2461 exploits은 현재 시스템이나 툴에서 사용 가능한 공격 코드인 익스플로잇의 개수를 의미하는 표현이고, 1471 payloads는 현재 사용 가능한 페이로드가 1471개라는 뜻이다.
이때, 페이로드란, 익스플로잇이 성공한 후, 대상 시스템에 전달되어 실행되는 코드이다.

그 다음, 사용자를 추가하는 명령어를 사용한다.

1
sudo adduser 

명령어를 보면 알 수 있듯이, 관리자 권한으로 실행하는데, 비밀번호는 metasploitable2의 기본 비밀번호인 msadmin을 사용한다.


Nmap 옵션 설명

1
nmap [IP] 

타겟의 포트와 서비스 등을 스캔하는 명령어인데, 네트워크 상 포트를 스캔해 서비스 정보를 파악할 수 있는 도구다. 침투 테스트에서 목표 시스템의 열린 포트, 실행 중인 서비스, 운영체제 등을 파악할 때 자주 사용한다. -sS, -sV, -O, -A, -p, -T[] 등의 옵션을 사용할 수 있다.

옵션 설명
-sS TCP SYN을 스캔
-sV 서비스 버전의 정보를 확인
-O 운영체제 추정
-A 운영체제, 버전, 스크립트 등 종합적 스캔
-p 특정 포트만 스캔, 옵션 뒤에 스캔할 포트를 입력하고 IP를 입력하여 사용
-T[] 속도를 조절하는 옵션 (T0~T5), 숫자가 클수록 빠름

그리고 이 옵션들을 조합하여

1
nmap -sS -sV -p 51,67 -T4 [IP] 

이렇게 쓸 수 있다.
이는 TCP SYN 스캔, 서비스 버전 정보 확인, 51번 포트와 67번 포트 확인, T4는 스캔 속도 마지막 숫자는 IP임을 나타낸다.

T[] 옵션에 대해 부가설명하자면, 보통 기본값은 T3인데, 실습시에는 일반적으로 조금 더 빠른 T4를 사용한다. 빠른 걸 원하면 T5를 사용하면 되지 않냐는 생각을 할 수도 있는데 매우 빠르기 때문에 부정확할 가능성이 있다는 것이다. 숫자가 클수록 정확도가 떨어지고 누락되는 값은 많아지며 방화벽에 의해 쉽게 탐지되고, 네트워크 부하가 걸릴 가능성이 높다는 것이다.

위에 작성한 명령어들을 바탕으로 metasploitable2에서 nmap 스캔한 결과, 다음 두 가지
취약한 서비스들을 확인할 수 있었다.

첫 번째는 telnet 명령어다.
그림 2.

그림 2.
1
telnet [IP]

이는 대상 호스트의 Telnet 서비스에 직접 접속하는 명령어다.
실행 시 로그인까지 하면 셸이 열려서 ls, whoami 등 metasploitable2 내부 명령어를 실행할 수 있다.


Hydra root vs msfadmin 무차별 대입 공격 비교

그림 3.

그림 3.
hydra를 이용해 Telnet 서비스에 무차별 대입 공격을 시도한 결과, **root 계정**으로는
1
hydra -l root -P small.txt telnet://[IP]

위의 명령어를 실행했을 때, 0 valid passwords found가 출력되며 실패했다. 이는 root 계정이 보안 상의 이유로 접속 시도 제한이나 계정 잠금 정책이 적용되어 있거나, 공격에 사용된 비밀번호 리스트(small.txt) 내에 root 계정의 실제 비밀번호가 포함되어 있지 않기 때문이다.
반면, msfadmin 계정으로 같은 단어 리스트를 사용해

1
hydra -l msfadmin -P small.txt telnet://[IP]

위의 명령어를 실행하자, login: msfadmin, password:msfadmin이라는 결과가 출력되며 로그인 정보 추출에 성공했다. 이는 msfadmin 계정이 초기 설정 시 기본값으로 남아 있거나 취약한 비밀번호가 사용된 상태여서 무차별 대입 공격에 쉽게 노출된 것으로 판단된다. 즉, root 계정은 보안 조치나 강력한 비밀번호로 인해 공격을 방어한 반면, msfadmin 계정은 기본 계정 및 비밀번호 관리 미흡으로 인한 취약점이 드러난 것이다.

그림 4.

그림 4.
1
ifconfig 

그림 5.

그림 5.
1
ip a 

리눅스와 우분투에서 각각 ip값을 알아낸다.

그림 6.

그림 6.
1
sudo nmap -sT [IP] 

3-way handshaking을 이용하여 포트가 열려있는지 닫혀있는지 알아보는 스캔 방법
연결 기록이 남기 때문에 공격자가 자주 사용하진 않는다.
여기서는 포트가 다 닫혀 있어서 공격을 할 수 없다. 따라서 우분투에서 nmap에서 포트가 보이게 해야 공격 실습이 가능하다. 위 내용은 포트가 닫혀 있어 진행할 수 없음을 나타낸다. 따라서 우분투에서 포트를 먼저 열어주어야 한다.
그림 7.

그림 7.
1
sudo apt install xinetd telnetd 

그림 8.

그림 8.
1
sudo systemctl start xinetd 

그림 9.

그림 9.
1
2
sudo apt install net-tools -y 
sudo netstat -tulnp | grep 23

이를 통해 우분투에 telnet 서비스가 열리고, 23포트가 열리며 공격이 가능해진 상태가 되는 것이다.


Nmap 스캔 실습, 포트 및 서비스 취약점 탐색 과정

그림 10.

그림 10.
1
sudo nmap -sS [IP] 

nmap을 사용해 타겟 시스템 [IP]의 열린 포트를 스캔한 결과, 23번 포트가 열려 있고 telnet 서비스가 실행 중인 것을 확인할 수 있었다. 이는 우분투 피해자 시스템에서 telnet 서비스를 활성화한 결과이며, 해당 포트를 통해 인증 우회, 무차별 대입 공격 등 다양한 취약점 실습이 가능해진다. 나머지 999개의 포트는 닫혀 있었으며, nmap은 TCP SYN 스캔인 -sS 옵션을 통해 포트 상태를 빠르게 판별했다.

그림 11.

그림 11.
1
sudo nmap -sU –top-ports 30 [IP] 

UDP 서비스 탐지를 위해 nmap -sU –top-ports 30 명령어를 사용하여 상위 30개의 UDP 포트를 스캔한 결과, 68번 (dhcpc) 포트와 5353번(zeroconf) 포트가 open|filtered 상태로 확인되었다. 이는 해당 포트들이 열려 있거나 방화벽 등에 의해 필터링되어 명확한 상태를 판단할 수 없음을 의미한다. UDP는 특성상 응답이 없어도 열려 있을 가능성이 있어 open|filtered라는 중간 상태로 나타나는 경우가 많다. 스캔에는 약 26초가 소요되었으며, 나머지 28개의 포트는 응답 없음 (port-unreach)으로 닫혀 있는 상태였다.
참고로, TCP 스캔 결과에서는 23번 포트(telnet)가 열린 상태였지만, 이번 UDP 스캔에서는 해당 포트는 나타나지 않았다. 이는 telnet 서비스가 TCP 기반이기 때문이며, UDP 스캔에서는 별도로 동작하는 UDP 서비스만 탐지된다.

그림 12.

그림 12.
1
sudo nmap -sN [IP] 

TCP Null 스캔을 통해 타겟 시스템의 포트를 탐지한 결과, 23번 포트가 open|filtered 상태로 나타났다. 이는 해당 포트가 열려 있을 수도 있고, 방화벽 등 보안 장치에 의해 정확한 응답이 차단되어 있을 수도 있음을 의미한다. Null 스캔은 TCP 플래그를 설정하지 않고 전송하는 방식으로, 일부 시스템에서는 보안 장비 우회를 위해 활용되지만, 신뢰성이 떨어질 수 있다는 단점이 있다. 나머지 999개 포트는 reset 응답으로 닫혀 있는 것으로 확인되었다.


telnet

그림 13.

그림 13.
1
sudo nmap -sV [IP] 

에서 nmap -sV 명령어를 사용해 타겟 시스템의 서비스 버전을 탐지한 결과, 23번 포트가 열려 있고 해당 포트에서 Linux telnetd 서비스가 실행 중인 것을 확인했다. 이는 telnet 서버가 리눅스 기반 시스템에서 동작하고 있음을 의미하며, 서비스 정보에는 운영체제 (OS)가 Linux로 식별되었다. 버전 탐지를 통해 구체적인 서비스 종류를 파악할 수 있어, 이후 취약점 검색 및 익스플로잇 도구 선택에 유용한 정보를 제공한다.

그림 14.

그림 14.
1
sudo nmap -A [IP] -T4

종합적인 시스템 정보를 수집하기 위해 nmap -A -T4 명령어를 사용해 스캔을 수행했다. 그 결과, 23번 포트에서 Linux telnetd 서비스가 실행중이며, 운영체제는 Linux 커널 4.15~5.8 범위로 추정되었다. -A 옵션서비스 버전, 운영체제 정보, 트레이서트 등을 포함한 고급 탐지 기능을 활성화하며, -T4는 스캔 속도를 빠르게 하기 위한 성능 옵션이다. 이 결과는 공격 대상 시스템의 구조와 취약점을 파악하는 데 매우 유용하며, 향후 exploit 도구를 선택하는 데 중요한 기초 정보로 활용될 수 있다.

그림 15.

그림 15.
1
dpkg -l | grep telnetd 

이 명령어로 설치된 패키지의 버전을 확인했다. 피해자 시스템에는 telnetd 0.17-44build1 이 설치되어 있었으며, 이는 Ubuntu용으로 리패키징된 구형 telnet 서버다. 해당 버전은 과거 BSD 기반 telnetd의 버퍼 오버플로우 취약점(CVE-2001-0554) 코드에서 파생되었지만, encryption 기능이 제거되거나 비활성화되어 있는 경우 이 취약점은 직접적으로 적용되지 않는다. 그러나 telnet 프로토콜 자체가 암호화되지 않은 평문 통신을 사용하기 때문에, 여전히 스니핑 및 무차별 대입 공격에 매우 취약하다.

그림 16.

그림 16.
1
2
sudo nmap –script=telnet-brute.nse -p23 –script
args=brute.threads=10,brute.max_retries=1 [IP]

telnet-brute.nse가 10분 제한 시간 초과 후 No valid accounts found가 나왔다. 즉, nmap brute-force는 너무 느리고 효율적이지 않았다. 따라서 무차별 대입 공격에 빠르고 효과적인 hydra를 이용했다.

그림 17.

그림 17.
1
hydra -l msfadmin -P /usr/share/wordlists/rockyou.txt telnet://[IP]

실행 결과를 통해 알 수 있는 것은 공격은 정상적으로 시작되었으며, 계정은 msfadmin이고, 비밀번호 리스트는 rockyou.txt, 진행 속도는 매우 느리다는 것이다. 현재 리스트가 너무 커서 현실적으로는 불가능하다고 보기에 작은 리스트로 공격을 진행하는 것을 추천한다.

그림 18.

그림 18.
1
msfconsole 

Metasploit을 실행한다.

그림 19.

그림 19.
1
search telnet 

telnet 관련 모듈을 검색한다. 여기서 내가 사용할 모듈은 **72번 auxiliary/scanner/telnet/telnet_login**이다.

그림 20.

그림 20.
1
use auxiliary/scanner/telnet/telnet_login 

모듈을 선택해서 프롬프트가 변경된 것을 알 수 있다.

1
show options 

기본 설정값을 확인한다. 여기서 어떤 값들을 set 해야 하는지 보여준다.

그림 21.

그림 21.
1
2
3
4
set RHOSTS 192.168.245.131 
set RPORT 23
set USERNAME msfadmin
set PASSWORD msfadmin

설정되어있지 않은 RHOSTS, RPORT, USERNAME, PASSWORD 등을 추가로 설정해준다.

그림 22.

그림 22.
1
run 

실행한다.
Metasploit의 telnet_login 모듈을 이용해 msfadmin:msfadmin 조합으로 로그인을 시도했으나 실패했다. 계정과 그 비밀번호가 msfadmin:msfadmin이 아니었고, 계정 자체가 없었던 문제점을 발견해서 우분투로 돌아가 재설정을 했다.

그림 23.

그림 23.
1
2
3
sudo useradd -m msfadmin 
echo ‘msfadmin:msfadmin’ | sudo chpasswd
Sudo systemctl restart inetd

이 명령어들을 활용하여 우분투에서 계정을 만들고 비밀번호를 설정했다. 계정을 만들 때 캡처를 하지 않고 터미널을 종료했어서 이미 만든 계정을 확인하는 명령어 실행 부분을 첨부했다.

그림 24.

그림 24.
1
run 

내부 테스트 환경에서 Kali Linux를 이용해 Ubuntu 호스트의 Telnet 서비스 취약점을 탐지하고 공격하는 과정을 진행했다. 우선 Nmap 스크립트를 통해 Telnet 서비스가 활성화된 것을 확인했고, Metasploit 프레임워크의 auxiliary/scanner/telnet/telnet_login 모듈을 사용기본 계정 msfadmin과 비밀번호 msfadmin으로 로그인 시도를 했다. 초기에는 위와 같이 로그인 실패가 발생하여, 다른 취약점을 더 찾아보려 했으나 이 마저도 실패하여 다시 시도한 후 해당 조합으로 성공적으로 로그인에 성공했다. 이후 자동으로 명령어 셀 세션이 열리면서 원격 시스템에 대한 제어 권한을 획득하였다. 이는 Telnet 서비스에 기본 계정이 활성화된 상태에서 쉽게 접근이 가능하다는 점을 입증한 사례다.


마치며..

이번 글에서는 리눅스 환경에서 익스플로잇을 활용한 공격 실습 과정을 자세히 살펴보았다. 메타익스플로잇과 nmap, hydra 같은 도구를 통해 취약한 서비스 탐색부터 무차별 대입 공격, 권한 획득까지 실제 상황을 재현해 보았다. 특히 기본 계정과 약한 비밀번호 관리가 얼마나 치명적인 보안 취약점이 될 수 있는지를 확인할 수 있었다. 앞으로도 보안 강화와 철저한 계정 관리가 중요하다는 점을 다시 한번 느낀 시간이었다. 또한, 정말 많은 오류들을 마주하며 그만하고 싶다는 생각을 몇 번이고 했는데 해야만 한다는 생각에 계속 하다보니 오류들을 고칠 수 있게 되었고 오류없이 실행되었을 때의 성취감이 너무 행복했다.


출처

  • Gordon Lyon. (n.d.). Nmap Network Scanning. Retrieved July 7, 2025, from
    https://nmap.org/book/man-port-scanning-techniques.html
  • Rapid7. (n.d.). Metasploit Framework Documentation. Retrieved July 7, 2025, from
    https://docs.rapid7.com/metasploit
  • van Jauser / THC Hydra. (2023). THC Hydra – A parallelized login cracker. Retrieved July 7,
    2025, from https://github.com/vanhauser-thc/thc-hydra
  • MITRE Corporation. (n.d.). Common Vulnerabilities and Exposures(CVE). Retrieved July 7,
    2025, from https://cve.mitre.org
  • Offensive Security. (n.d.). Kali Linux Documentation. Retrieved July 7, 2025, from
    https://www.kali.org/docs/
  • Offensive Security. (n.d.). Exploit Database. Retrieved July 7, 2025, from
    https://www.exploit-db.com
  • Samir, C. (2025, June). How to Use Nmap for Penetration Testing in 2025. Cyber Samir.
    Retrieved July 7, 2025, from https://cybersamir.com/how-to-use-nmap-for-penetration-testing-in-2025