Testing Pyro

Nah, iseng nya dilanjutin. Sekarang ditambahin dengan fungsi client-server menggunakan pyro,

import Pyro.core
from ctypes import windll
from os import listdir
from sys import argv

class Rembugger(Pyro.core.ObjBase):

def __init__(self):
Pyro.core.ObjBase.__init__(self)

def bootstrap(self):
"""
"""

Pyro.core.initServer()
self.daemon = Pyro.core.Daemon(host="10.211.55.19", port=8383)
self.uri = self.daemon.connect(Rembugger(), "rembugger")
print "Windows Remote Debugger running on port: ", self.daemon.port
print "The object's uri is: ", self.uri
self.daemon.requestLoop()

def resolve_function(self, dll, function):
kernel32 = windll.kernel32
handle = kernel32.GetModuleHandleA(dll)
address = kernel32.GetProcAddress(handle, function)
kernel32.CloseHandle(handle)

return address

def find_function(self, funcName):
dlls = listdir('c:\\windows\\system32\\\')
res = ""
address = 0
for dll in dlls:
address = self.resolve_function(dll, funcName)
if address:
break

if address:
res = funcName + " is located at " + hex(address) + "in " + dll
else:
res = funcName + " is not found. Mispell maybe?"

return res

if __name__ == '__main__':
tmpinst = Rembugger()
tmpinst.bootstrap()

Berikut ini ketika diakses menggunakan aplikasi client,

 

$ python client.py

.-.
: :
.--. .--. ,-.,-.,-.: `-. .-..-. .--. .--. .--. .--.
: ..'' '_.': ,. ,. :' .; :: :; :' .; :' .; :' '_.': ..'
:_; `.__.':_;:_;:_;`.__.'`.__.'`._. ;`._. ;`.__.':_;
.-. : .-. :
`._.' `._.'

++ Simple Remote Windows Debugger ++

CLI. >> locate_function
Please enter the function name to locate: sleep
sleep is not found. Mispell maybe?
CLI. >> locate_function
Please enter the function name to locate: Sleep
Sleep is located at 0x7c802446in kernel32.dll
CLI. >> exit

Got the idea?yeah yeah, sudah banyak yang implement sebetulnya. Intinya sih akan memudahkan buat orang yang melakukan debugging windows tapi tidak suka menggunakan windows. Loh?

Misal: saya menggunakan Mac OSX untuk kegiatan sehari-hari, tapi klo develop exploit ataupun melakukan analisis bug/exploit berbasis windows jelas harus menggunakan virtual machine ataupun komputer lain yang berbasis windows. Dengan virtual machine ataupun komputer lain jelas lebih enak jika kita tidak harus bolak-balik buka windows dan mac osx, tapi cukup misalnya menggunakan terminal mac osx namun kita dapat mengontrol aplikasi yang sedang di debug pada windows secara penuh melalui command line.

Implementasi menggunakan pyro cukup sederhana dan mudah karena prinsipnya seperti RPC (Remote Procedure Call). Setidaknya bisa memudahkan hobi sehari-hari lah…

Advertisements

One thought on “Testing Pyro

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s