
마스터처럼 셸을 띄우세요.
Shellpop은 셸을 생성하는 모든 것에 관한 도구입니다. 이 도구를 사용하면 침투 테스트 중에 쉽고 정교한 리버스 또는 바인드 셸 명령을 생성할 수 있습니다.
Python 2.7이 필요합니다.
3.0+ 버전은 작동하지 않습니다.
필수 종속성 설치
root@kali# apt-get install python-argcomplete metasploit-framework -y
root@kali# pip install -r requirements.txt
설치 설정
root@kali# python setup.py install
참고: 설치 후, 탭 자동 완성은 터미널을 재시작해야만 작동합니다.
이 도구의 모든 사용 가능한 옵션을 빠르게 나열하려면 --help를 사용하세요.
root@kali# shellpop --help

--list 옵션을 사용하여 사용 가능한 모든 shellpop 셸을 나열할 수 있습니다.
root@kali# shellpop --list

이제 shellpop에는 자동 완성 기능이 있습니다. 사용하려면 --number 및 (--reverse 또는 --bind)를 잊고 --payload 인수만 사용하면 됩니다. 아래 이미지와 같습니다:

시간을 낭비하지 마세요. 이 도구는 시간을 절약하는 것이 전부입니다. 따라서 생성된 모든 페이로드에 --clip 옵션을 사용하여 자동으로 클립보드에 복사할 수 있습니다.
이 프로그램에는 두 가지 유형의 페이로드가 있습니다: 바인드 또는 리버스.
리버스 셸은 공격자 머신을 "서버" 역할로 사용합니다. 이 유형의 페이로드에서는 --host와 --port 모두 사용자 머신을 가리켜야 합니다. 핸들러를 설정해야 합니다.
바인드 셸은 원격 호스트가 연결을 제공하도록 합니다. 이 유형의 페이로드에서는 유효한 포트 번호를 가진 --port 옵션만 있으면 됩니다.


현재 생성된 페이로드에 사용 가능한 두 가지 주요 난독화 방법이 있습니다:
페이로드의 모든 변수를 무작위로 명명된 변수로 대체합니다. 모든 페이로드에 자동으로 적용됩니다.

페이로드가 사용하는 IP 주소와 포트를 난독화합니다
@vysecurity가 만든 용어로, IPfuscation은 IP 주소를 10진수, 8진수, 16진수 또는 이들의 조합으로 변환해도 계속 사용할 수 있다는 잘 알려지지 않은 사실을 활용합니다.
포트 난독화는 포트 번호를 포트 번호로 평가되는 수학적 표현식으로 대체하여 수행됩니다.

여기서 생성된 페이로드의 IP 주소는 다양한 숫자 기반의 조합입니다. 첫 번째 부분은 일반 10진수 표기법, 두 번째와 세 번째 부분은 2와 3을 8진수로 변환하고 무작위 0으로 패딩, 네 번째 부분은 4를 16진수로 변환하고 일부 0으로 패딩한 것입니다. IP 주소의 각 부분에 사용할 기반 선택은 무작위이며, 16진수 및 8진수에 사용되는 패딩 0의 개수도 무작위입니다.
포트는 443을 443으로 평가되는 표현식으로 대체하여 난독화됩니다. 이 표현식도 무작위로 생성됩니다.
IPfuscation은 선택 사항이지만, 랜덤 변수 난독화는 이제 모든 페이로드에 자동으로 적용됩니다. 페이로드 크기가 중요한 경우 --obfuscate-small 옵션을 사용하여 난독화로 인한 크기 증가를 최소화할 수 있습니다. 이 옵션을 사용하면 변수 이름, IP 주소 및 포트 번호가 훨씬 짧아집니다.

인코더는 shellpop 페이로드를 생성하는 동안 사용할 수 있는 특수 옵션입니다.
현재 단독으로 또는 동시에 적용할 수 있는 세 가지 인코딩 방법이 있습니다:
무작위 숫자 키(1-255)를 사용하여 페이로드를 난독화하고 이를 해독하기 위한 복호화 스텁을 추가합니다.
페이로드 데이터에 간단한 base64 인코딩을 적용하고 이를 해독하기 위한 복호화 스텁을 추가합니다.
최종 페이로드에 간단한 URL 인코딩을 적용합니다.






핸들러는 수신 연결을 받기 위해 소켓을 제공하거나 셸을 설정하기 위해 서버 엔드포인트에 연결하는 작업을 "처리"하는 메커니즘입니다.
현재 다음 TCP 핸들러가 지원됩니다:
이는 모든 TCP 셸에 명령줄 인수로 --handler 옵션을 추가할 수 있음을 의미합니다. 이로 인해 운영자가 직접 핸들러(아마도 ncat 또는 nc)를 실행할 필요가 없습니다.

이 기능은 이 도구를 사용하는 사람들이 많이 요청한 기능입니다. 이제 0.3.6부터 핸들러가 기본적으로 Metasploit Framework를 사용하여 셸을 연결하므로 모든 shellpop 셸을 미터프리터로 업그레이드하는 것이 기술적으로 가능해졌습니다.

스테이저는 페이로드를 단계적으로 제공하는 메커니즘입니다. 때로는 페이로드의 복잡성이나 크기가 문제가 될 수 있습니다. 이러한 경우, 작은 페이로드를 제작하여 더 큰 페이로드를 요청하고 실행할 수 있습니다.
현재 다음 스테이저 프로토콜이 지원됩니다:
ShellPop은 원하는 모든 시나리오에 맞는 다음과 같은 HTTP 스테이저 세트를 제공합니다:
HTTP 스테이징을 사용하려면 명령줄에 --stager http를 추가하고, 선택적으로 HTTP 서버 포트를 지정하려면 --http-port 플래그를 사용하여 미리 정의된 포트 앞에 포트 번호를 추가합니다.

현재 셸을 연결하기 위해 두 가지 프로토콜이 지원됩니다:

이 코드는 Andre Marques (@zc00l)와 이 프로젝트의 기여자들이 작성했습니다.
이 GitHub에 릴리스된 순간부터 공개적으로 제공됩니다.
이 도구로 인해 발생한 모든 피해에 대해 저자를 포함한 어떤 기여자도 책임을 지지 않습니다.
모든 기여자분들께 진심으로 감사드립니다.