SSH 열거 및 키 기반 액세스

LinuxBeginner
지금 연습하기

소개

SSH 열거 및 취약한 키 기반 인증 악용에 초점을 맞춘 실습 랩에 오신 것을 환영합니다. Secure Shell (SSH) 은 안전한 원격 관리를 위한 기본 프로토콜이지만, 잘못된 구성은 심각한 보안 취약점을 야기할 수 있습니다.

이 랩에서는 대상 시스템에 대한 모의 침투 테스트를 수행합니다. 먼저 네트워크 연결을 확인한 다음, 강력한 nmap 도구를 사용하여 SSH 서비스를 열거하고 정보를 수집합니다. 다음으로, 제공된 개인 키를 활용하여 일반적인 잘못된 구성 (부적절한 파일 권한) 을 악용하여 암호 없는 쉘 액세스를 얻습니다. 마지막으로 대상 시스템을 탐색하여 숨겨진 플래그를 찾고 검색합니다.

완료 후에는 다음을 수행하는 방법을 이해하게 됩니다.

  • ping을 사용하여 네트워크 연결 확인
  • nmap으로 SSH 서비스 열거
  • SSH 키 기반 인증의 기본 사항 이해
  • 취약한 키 권한을 악용하여 무단 액세스 획득
  • 원격 시스템을 탐색하여 민감한 정보 찾기

시작해 봅시다.

Ping 으로 대상 연결 확인

이 단계에서는 먼저 자신의 컴퓨터가 대상 시스템과 통신할 수 있는지 확인합니다. ping 명령은 호스트에 ICMP 패킷을 보내 도달 가능성을 테스트하는 표준 네트워크 진단 도구입니다. 이는 모든 네트워크 정찰의 첫 번째이자 가장 기본적인 단계입니다.

귀하의 환경에는 target 호스트 이름을 통해 액세스할 수 있는 대상 시스템이 포함되어 있습니다.

터미널에서 다음 명령을 실행하여 target에 네 개의 패킷을 보내 온라인 상태인지 확인하십시오.

ping -c 4 target

아래와 유사한 응답을 보게 될 것이며, 이는 대상에 도달할 수 있고 네트워크 연결이 안정적임을 확인합니다. IP 주소와 응답 시간은 약간 다를 수 있습니다.

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.065/0.072/0.091/0.011 ms

연결이 확인되었으므로 다음 단계인 열거 단계로 진행할 수 있습니다.

Nmap 으로 열린 포트 스캔

이 단계에서는 nmap을 사용하여 대상의 열린 포트를 스캔하고 해당 포트에서 실행 중인 서비스를 식별합니다. Nmap (Network Mapper) 은 보안 전문가를 위한 중요한 도구로, 네트워크 검색 및 보안 감사에 사용됩니다.

SSH 의 표준 포트인 포트 22 에 대해 대상 스캔을 수행하여 버전 정보와 호스트 키를 수집합니다.

터미널에서 다음 명령을 실행하십시오.

nmap -sV -p 22 --script ssh-hostkey target
  • -sV: 서비스 및 버전 탐지를 활성화합니다.
  • -p 22: 포트 22 만 스캔하도록 지정합니다.
  • --script ssh-hostkey: 대상의 SSH 호스트 키를 검색하는 Nmap 스크립팅 엔진 (NSE) 스크립트입니다.

출력은 다음과 유사하게 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 11:56 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00020s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds

스캔 결과 포트 22/tcp가 열려 있고 OpenSSH 8.9p1이 실행 중임을 확인했습니다. 이 정보는 다음 단계에서 연결을 시도하는 데 중요합니다.

SSH 로 대상에 연결

이 단계에서는 제공된 SSH 개인 키를 사용하여 대상에 연결합니다. SSH 키 기반 인증은 일반적으로 비밀번호 인증보다 안전하지만, 개인 키를 비밀로 유지하고 클라이언트와 서버 모두에서 파일 권한이 올바르게 구성되어 있는지에 따라 달라집니다.

개인 키 파일인 id_rsa~/project 디렉토리에 배치되었습니다. SSH 가 개인 키를 사용하려면 해당 권한이 제한적이어야 합니다. chmod 명령으로 올바른 권한을 설정하십시오.

chmod 600 id_rsa

이 명령은 파일 소유자만 읽기 및 쓰기 권한을 갖도록 보장하며, 이는 대부분의 SSH 클라이언트에서 요구하는 사항입니다.

올바른 키가 있음에도 비밀번호를 입력하라는 메시지가 표시되면 서버 측 권한 문제일 가능성이 높습니다. SSH 는 사용자의 홈 디렉토리에 그룹 또는 다른 사용자에 대한 쓰기 권한이 없어야 합니다. 현재 권한을 확인하십시오.

docker exec target-container ls -ld /home/testuser

drwxrwxrwx (777) 와 같은 권한이 보이면 수정하십시오.

docker exec target-container chmod 755 /home/testuser

이제 개인 키를 사용하여 testuser 사용자로 target에 연결하십시오.

ssh -i id_rsa testuser@target
  • -i id_rsa: 인증에 사용할 식별 파일 (개인 키) 을 지정합니다.

호스트의 인증을 확인할지 묻는 메시지가 표시될 수 있습니다. yes를 입력하고 Enter 키를 누르십시오.

The authenticity of host 'target (172.17.0.2)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

서버의 잘못된 구성 (사용자 홈 디렉토리의 안전하지 않은 권한) 으로 인해 SSH 서비스는 키를 허용하고 비밀번호 없이 액세스 권한이 부여됩니다. 로그인하면 대상의 쉘 프롬프트가 표시됩니다.

Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-48-generic x86_64)
...
testuser@target:~$

대상 시스템에 대한 쉘 액세스 권한을 성공적으로 획득했습니다.

대상 시스템 탐색 및 플래그 찾기

이 단계의 최종 목표는 플래그 파일을 찾아 읽는 것입니다. 이제 대상 시스템에서 쉘을 확보했으므로 로컬 머신처럼 파일 시스템을 탐색할 수 있습니다. 이것은 공격자가 귀중한 데이터를 검색하는 후속 공격 (post-exploitation) 단계입니다.

현재 testuser의 홈 디렉토리 (/home/testuser) 에 있습니다. ls 명령을 사용하여 이 위치의 파일 및 디렉토리를 나열하십시오.

ls

홈 디렉토리의 내용을 볼 수 있으며, 여기에는 플래그 파일이 포함되어야 합니다.

testuser@target:~$ ls
flag.txt
testuser@target:~$

flag.txt를 찾았습니다. 이제 cat 명령을 사용하여 해당 내용을 표시하고 플래그를 확인하십시오.

cat flag.txt

터미널에 플래그 값이 출력됩니다.

testuser@target:~$ cat flag.txt
labex{ssh_k3y_b4s3d_acc3ss_fl4g}
testuser@target:~$

축하합니다! SSH 서비스를 성공적으로 열거하고, 키 기반 인증 취약점을 악용했으며, 플래그를 획득했습니다. 랩을 완료하려면 플래그 값을 복사하십시오.

대상에서 연결을 끊으려면 exit를 입력하고 Enter 키를 누르십시오.

요약

이 랩에서는 잘못 구성된 SSH 서비스를 대상으로 하는 시뮬레이션 공격을 성공적으로 수행했습니다. 초기 정찰부터 후속 공격 (post-exploitation) 까지 침투 테스트의 주요 단계를 진행했습니다.

다음과 같은 내용을 배웠습니다.

  • ping을 사용하여 대상이 온라인 상태인지 확인하는 방법.
  • nmap을 사용하여 SSH 포트에 대한 상세 스캔을 수행하고 서비스 버전을 식별하는 방법.
  • SSH 키 기반 인증에 대한 클라이언트 측 요구 사항 (적절한 개인 키 권한 (chmod 600) 포함) 을 이해하는 방법.
  • 잘못된 파일 권한과 관련된 서버 측 취약점을 악용하여 무단 쉘 액세스를 얻는 방법.
  • 원격 파일 시스템을 탐색하여 플래그를 찾고 검색하는 방법.

이 연습은 중요한 보안 원칙을 보여줍니다. 보안은 사슬이며, 단 하나의 약한 고리 (이 경우 부적절한 디렉토리 권한) 는 SSH 키와 같은 강력한 인증 메커니즘이 사용되는 경우에도 전체 시스템을 손상시킬 수 있습니다. 항상 SSH 구성 및 파일 권한이 보안 모범 사례에 따라 강화되었는지 확인하십시오.