분류 전체보기 (267) 썸네일형 리스트형 [모의해킹] 타겟PC 에 Backdoor 설치 우선 기존의 exploit 을 통해 meterpreter 쉘로 진입한다.(일단 예시를 위해 ms08_067 로 익스플로잇) 그 후, upload 명령어를 이용해 nc.exe 를 업로드 시킨다. (백도어)업로드 명령어upload [Upload_File_Path] [To_upload_File_path] 백도어를 설치하는 이유는 장악 유지를 하기 위해, 언제든지 내가 침입하기 위해 설치하는 것 백도어를 설치할 때는, 우선 항상 실행되게 하기 위해 레지스트리에 등록을 해놓고, 시작프로그램으로 실행되게 한다. meterpreter> reg// 레지스트리 명령어 시작 프로그램 등록을 위해 우리가 변경해야 할 레지스트리의 키 경로는,HKEY_LOCAL_MACHINE - SOFTWARE - Microsoft - Win.. 모의해킹 - Heap Overflow 를 이용한 Exploit [+] Stack 을 이용한 오버플로우는 익스플로잇 확률이 거의 100%에 가까워서 실습이 쉬웠지만,Heap 영역은 런타임 시에 결정되므로 성공률이 높지 않다.(익스플로잇이 될수도, 실패할 수도 있다) Exploit name - ms04_007_killbillPayload name - reverse_tcp 나중에 성공하면 다시 올리겠다. 메타스플로잇- API를 이용하기 목표 1. XP에서 실행시킨 노트패드를 API를 이용해 종료2. 희생자의 컴퓨터에서 메세지 박스 띄우기 메모장 끄기 notepad PID : 848 meterpreter> irb ?> client.railgun.kernel32.OpenProcess("PROCESS_TERMINATE",false,848)return => 2232>> Phandle=[2232]>> client.railgun.kernel32.TerminateProcess(2232,0) 하면 PID가 848 인 프로세스가 꺼진다. (여기서는 메모장) 메세지 박스 키기!메세지 박스를 키는 API 는 MessageBoxA() 이다.하지만 우선 explorer.exe 로 migrate 해두자. (메세지를 띄우려면 GUI 의 도움을 받아야 하므로)또한.. 디버거와 프로세스를 연결하는 방법, CPU 레지스터 값을 출력하는 방법 지식출처: http://scytalezz.tistory.com/21 BOOL CreateProcess { } 프로세스를 디버깅 하려면 일단 디버거와 프로세스를 연결해야 한다.그래서 디버거에서 직접 프로세스를 실행시키거나, 이미 실행한 프로세스의 PID를 이용해 붙여야 한다. 프로세스를 실행시키는 경우, 프로세스의 코드가 실행되기 전 디버거가 제어를 할 수 있다는 장점이 있다.윈도우에서 프로세스를 실행시킬 때 CreateProcess() 함수를 호출한다. BOOL CreateProcess( LPCWSTR pszImageName, // 실행시킬 실행 바이너리 경로 LPCWSTR pszCmdLine, // 커맨드라인 인자 전달 LPSECURITY_ATTRIBUTES psaProcess, LPSECURITY_A.. my_test.py # -*- coding: cp949 -*- import my_debugger debugger = my_debugger.debugger() pid = raw_input("Enter the PID of the process to attach to: ") debugger.attach(int(pid)) list = debugger.enumerate_threads() # 스레드 리스트의 각 스레드에 대한 # 레지스터 값을 출력한다. for thread in list: thread_context = debugger.get_thread_context(thread) # 레지스터의 내용을 출력한다. print "[*] Dumping registers for thread ID: 0x%08x" % thread print ".. my_debugger_defines.py http://scytalezz.tistory.com/21 my_debugger.py # -*- coding: cp949 -*- from ctypes import * from my_debugger_defines import * kernel32 = windll.kernel32 class debugger(): def __init__(self): self.h_process = None self.pid = None self.debugger_active = False self.h_thread = None self.context = None # Here let's determine and store # the default page size for the system # determine the system page size. def load(self,path_to_exe): # dwCreation.. 20150114 스터디 정리 비쌈 메모리 최적화가 중요하다.Ex) fopen() 후 fclose() 를 해줘야함.물론 묵시적으로 프로그램이 종료되면 메모리가 반환되지만, 서버일 경우 죽지 않게 코딩하는 것이 목적이므로 fclose() 같은 메모리 반환은 중요하다. C 에서는 fopen 에 인자로 'w','r' 같이 읽기/쓰기를 구분하지만C++ 에서는 ifstream, ofstream 으로 구분한다. (함수명으로 구분한다.) cout 이전 1 ··· 22 23 24 25 26 27 28 ··· 34 다음