Antimalware Scan Interface 공부 중

AMSI (Antimalware Scan InterFace)


  • Microsoft가 개발 한 Windows 10에서 표준으로 탑재 된 Malware 대책 인터페이스
  • Powershell, VBscript, JavaScript 등과 통합되어 실행되는 스크립트의 대부분은 AMSI를 통해 WindowsDefender로 보내져 스캔이 이루어진다.
  • AmsiProvider를 독자적으로 작성하는 것으로 AMSI를 통해서 자신의 Provider에 실행되는 스크립트의 정보를 보낼 수가 있습니다. 그리고, 수신한 스크립트의 정보로부터 악의가 있는 것인지 판별하여 스크립트의 동작을 정지할 수 있다.


  • PowerShell과 AMSI의 관계에 대해 주로 공부


  • PowerShell에서 실행되는 스크립트는 AMSI를 통해 WindowsDefender로 전송됩니다.
  • AMSI는 실행되는 스크립트의 원본을 보냅니다

  • 구체적으로는, PowerShell 중에서는 win32API 안의 AmsiScanBuffer 함수나 AmsiScanString 함수가 AMSI에 스캔 요구를 내고 있다.
      


  • 인용원
    htps : // / cs. 미 c 로소 ft. 코 m / 엔 - s / undo ws / u 32 / amshi / Ho w-amshi-lps
  • 위의 그림을 PowerShell의 부분 만 발췌하고, 일반적으로 행해지고 있는 처리를 간단히 나타내면 이하의 그림이 된다.


  • 실제로 여러 가지 만져보고 얻은 지식


  • PowerShell을 시작할 때

  • 뒤에서 5 회 스크립트가 실행되고 있으며 초기 처리가 수행되었습니다.
    (AMSI를 통해 스크립트가 실행 중인지 확인)
  • 스크립트 실행 중에 오류가 발생했을 때

  • 뒤에서 5 번 스크립트가 실행되고 오류 처리가 수행되었습니다.
    (여기도 AMSI를 통해 스크립트가 실행되고 있는지 확인)
    그런 다음 오류 내용이 표시되고 프롬프트가 시작됩니다.

    애플리케이션 작성자의 AMSI 사용 방법


  • AmsiInitialize 함수 초기화 처리         ↓ .
  • AmsiScanBuffer 함수 스캔을 의뢰하는 처리 ↓
  • AmsiUninitialize 함수 초기화 전에 되돌리는 처리 ↓

  • 이 순서로 실행하면 스캔을 요청할 수 있습니다.
  • 함수 정의(c++)





  • 사용의 구체적인 예(정의만으로는 모르는 사람용)


  • 변수 정의
  • 
    HAMSICONTEXT amsiContext = NULL;
    HAMSISESSION amsiSession = NULL;
    AMSI_RESULT result = AMSI_RESULT_NOT_DETECTED;
    char buffer[]="スキャンしたい文字列"
    
  • 코드 본체
  • AmsiInitialize(L"myapplication", &amsiContext);
    AmsiScanBuffer(amsiContext,buffer,strlen(buffer), L"Scan Sample", amsiSession, &result);
    AmsiUninitialize(amsiContext);
    

    여기에서 이전 업데이트 예정

    참고문헌


  • htps : // / cs. 미 c 로소 ft. 코 m / 엔 우 s / 우 엔드 ws / 우 32 / 아 m시 / 안치 마우 레 - s 칸 - 인 r 푸세 뽀 r l
  • 좋은 웹페이지 즐겨찾기