
Lame은 Hack The Box에서 제공되는 모의해킹을 위해 만들어진 취약 환경이다.
Lame의 목표는 Root 권한을 획득하는 것이며, 또한 이 권한을 이용해 플래그를 획득하는 것이 목표이다.
침투 환경 세팅
Kali Linux

칼리 리눅스는 고급 침투 테스트 및 보안 감사의 목적으로 만들어진 데비안 기반 리눅스 배포판으로 매년 3번씩 릴리즈 된다. 이 환경에는 침투 테스트, 보안 연구, 디지털 포렌식, 리버싱과 같은 다양한 정보보안 작업에 적합한 수백가지의 도구가 포함되어 있다.
Lame의 침투 테스트를 위해 이 칼리 리눅스를 활용하려한다.
네트워크 스캔
해당 취약 환경은 이미 IP 주소( 10.10.10.3 )가 Hack The Box 사이트에 알려져 있는 관계로
해당 IP 주소로 바로 스캔을 진행하려한다.
스캔 도구로 Nmap을 사용한다.
Nmap은 네트워크 검색 및 보안 감사를 위한 무료 오픈소스 유틸리티로 네트워크에서 사용 가능한 호스트, 호스트가 제공하는 서비스, 실행중인 운영체제, 패킷 필터/방화벽 유형을 알아낼 수 있다.
Nmap의 다양한 옵션은
아래 링크에서 확인해 볼 수 있다. 여기서는 사용하는 옵션에 대해서만 설명하려 한다.
https://svn.nmap.org/nmap/docs/nmap.usage.txt
먼저, 다음 명령을 사용하여 우리가 스캔할 대상의 기본적인 정보를 얻는다.
sudo nmap -sV -O -F -Pn 10.10.10.3 |
nmap 옵션 | |
-sV | 열린 포트를 조사하여 서비스/버전 정보 확인 |
-O | OS 식별 |
-F | 빠른 스캔 모드. 기본 스캔보다 적은 수의 포트를 스캔 |
-Pn | 서버가 살아있는 것으로 가정하고 바로 포트 스캔 시도 |
10.10.10.3 | Lame 환경 IP주소 |

기본 스캔을 통해, 해당 취약 환경의 열려있는 포트 그리고 OS 환경, 버전 등을 확인할 수 있었다.
리눅스 기반의 환경이며 21번 포트(ftp), 22번 포트(ssh), 139번 포트(samba), 445포트(samba)가 열려있다.
기본적인 정보를 확인하였으니, 이제 더욱 상세한 스캔을 진행하기 위해 아래 명령을 수행한다.
sudo nmap -A -v -Pn 10.10.10.3 |
nmap 옵션 | |
-A | OS 감지, 버전 감지, 스크립트 스캔 & traceroute(추적 경로) 활성화 |
-v | 스캔 내용을 더 자세히 출력 (더 상세한 출력을 위해 옵션을 -vv, -vvv 까지 높일 수 있다.) |
-Pn | 서버가 살아있는 것으로 가정하고 바로 포트스캔 시도 |


취약점 공격
취약한 FTP
열려있는 포트 중 21번 포트 FTP의 취약점을 확인하려한다.
searchsploit을 사용하여 vsftpd 2.3.4 알려진 취약점이 있는지 확인한다.
Searchsploit은 Exploit-DB용 명령줄(command line) 검색 도구이다. 로컬 환경에서 명령줄 검색을 통해 Exploit-DB에 저장된 취약점들을 검색할 수 있다.
(Exploit-DB는 침투 테스터 및 취약점 연구자가 사용하도록 만들어진 공개된 취약점, 소프트웨어 취약점들의 모음 사이트이다.
알려진 공격코드가 지속적으로 업데이트되며 간단한 형태의 스크립트 형태의 코드, 메타스플로잇 모듈로 만든 코드 등 여러 플랫폼과 언어별로 존재한다. 칼리 리눅스에 Exploit DB에서 제공하는 취약점 코드가 내장되어 있다.)

vsftpd 2.3.4 취약점을 검색하기 위해 다음 명령을 사용한다.
sudo searchsploit vsftpd 2.3.4 |

Backdoor Command Execution 취약점을 발견하였다.
해당 취약점을 Metasploit를 활용해 침투해보겠다.
Metasploit Framework는 버퍼 오버플로우, 패스워드 취약점, 웹 응용 취약점, 데이터베이스, 와이파이 취약점 등에 대한 약 300개 이상의 공격 모듈을 가지고 있는 오픈 소스 도구로서, 이 도구를 이용하면 저렴한 비용으로 기업의 시스템에 대한 포괄적인 침투 테스트을 통한 취약성을 파악할 수 있다.
Metasploit는 Kali Linux 환경에 기본적으로 구성되어 있으므로 해당 침투환경에서 바로 실행하여 진행하겠다.

먼저, 칼리 리눅스에서 Metasploit Framework를 실행해 주고
아래 명령어를 통해 Metasploit 내에서 vsftpd 2.3.4 취약점 공격도구 Backdoor Command Execution를 검색한다.
search vsftpd 2.3.4 |

exploit/unix/ftp/svftpd_234_backdoor가 검색된다.
우리는 이 공격을 이용하여 침투해보려 한다.
해당 공격을 사용하기 위해 아래 명령을 입력한다.
use exploit/unix/ftp/vsftpd_234_backdoor |

이어서,
show options 명령을 통해 공격을 위해 필요한 옵션을 확인한다.
show options |

아직 원격 호스트(RHOSTS)가 설정되지 않았음을 알 수 있다.
공격을 실행하려면 이 원격 호스트 설정이 필요하므로 우리의 타겟인 10.10.10.3 Lame의 IP를 입력해준다.
set RHOSTS 10.10.10.3 |

그리고 공격을 진행한다.
exploit |

공격이 완료되었다고 하지만 세션이 연결되지 않는다.
해당 공격의 취약점이 패치가 된 것으로 예상된다.
취약한 Samba

또 다른 취약점을 찾아보기 위해 열려있는 포트를 확인해 보았다.
445포트가 열려있는 것을 보고 해당 포트에서 사용하고 있는 Samba 3.0.20 버전에 취약점이 있는지 알아보려한다.
이번에도 searchsploit을 이용하여 취약점을 검색한다.
sudo searchsploit samba 3.0.20 |
samba 3.0.20과 관련된 'Username' map script Command Exection 취약점이 존재하는 것을 알아내었다.

취약점 공격을 사용하기위해 Metasploit Framework를 이용하겠다.
아래 명령을 통해 samba 3.0.20 취약점을 검색한다.
search samba 3.0.20 |

14번째에 samba "username map script 취약점 공격이 있는 것을 확인했다.

exploit/multi/samba/usermap_script 공격을 사용하고

공격 타겟(10.10.10.3)을 설정해준 뒤
공격을 진행한다.

공격이 진행되고 세션이 연결된다.
명령 셸이 열려있고,
또한 whoami 명령어로 root 권한을 가지고 있음을 알아냈다.
whoami |

하지만,
단순 리버스 셸(Reverse Shell)로 작업을 이어간다면 여러가지 불편함이 많으므로
파이썬으로 pty모듈을 생성하여 배시 셸(Bash Shell)로 연결한다면 더 수월하게 진행할 수 있다.
아래 명령을 통해 진행한다.
python -c "import pty; pty.spawn('/bin/bash)'" |
pty는 유사 터미널을 위한 모듈이다. pty.spawn('/bin/bash')의 의미는 배시 셸 프로세스를 스폰하여 시작하고, 해당 프로세스의 제어 터미널의 표준 입출력을 현재 파이썬 프로세스의 표준 입출력과 연결한다는 말이다.
즉, 파이썬 프로세스 안에서 새로운 배시(Bash)를 실행하고 그것의 입출력을 파이썬이 실행중인 터미널에 그대로 노출하게 되는 것이다.

이어서,
/root 디렉터리에서 root.txt를

/home/makis 경로에서 user.txt를 찾아내는 데에 성공했다.
