Computer >> 컴퓨터 >  >> 체계 >> Windows

Windows 10 악용 방지 - 자습서

Windows 10 Fall Creators Update(빌드 1709)가 출시되면서 가장 우수하고 우아한 EMET(Enhanced Mitigation Experience Toolkit)를 더 이상 사용할 수 없거나 이 운영 체제에 설치할 수 있습니다. 대신 이러한 완화 기능은 이제 Windows 10의 필수 요소입니다.

저는 EMET의 열렬한 팬이고 모든 Windows 컴퓨터에서 EMET를 사용하고 있기 때문에 Windows 10에서 새로운 완화 기능을 배포하고 조정하는 방법에 대한 상세하고 실용적이며 실제적인 사용 가이드를 작성하기로 결정했습니다. 나를 따르라.


목차


<올 아이디="mozToc">
  • 소개 및 사전 읽기
  • Windows 10 악용 방지
    1. 시스템 설정
    2. 프로그램 설정
  • 구성 내보내기 및 가져오기
    1. 구성 파일 형식
    2. 이전 EMET 구성 사용
    3. 애플리케이션 템플릿
  • 실제 사용 및 예
    1. 새 구성 가져오기
    2. 구성 파일 내용
    3. 악용 방지 실행 및 사용
    4. 구성 수정 및 조정
    5. 지나친 보호
  • 추가 자료
  • 결론

  • 소개 및 예비 읽기

    우연히 이 기사를 접한 경우(이 주제의 틈새 및 괴상한 특성을 감안할 때 가능성이 낮음) EMET에 대해 간략하게 소개하겠습니다. 이 유틸리티는 잘못된 코드가 실행되는 것을 방지하는 일련의 시스템 및 프로그램 메커니즘입니다. 이렇게 하면 실행 중인 프로그램에서 악용을 잠재적으로 중지하고 차단할 수 있습니다.

    Microsoft는 수년 전에 EMET를 독립 실행형 도구로 출시했으며 모든 시스템에 수동으로 배포할 수 있습니다. 빌드 1709까지는 이전 두 버전의 Windows와 Windows 10에서 계속 사용할 수 있습니다.

    EMET는 실행 중인 프로그램이 실행할 수 있는 명령 및 메모리 액세스 유형을 제한하여 작동합니다. 이 아이디어의 장점은 좋은 프로그램과 맬웨어를 구분하지 않는다는 것입니다. 규정을 준수하는 소위 합법 코드와 규정을 준수하지 않는 소위 불법 코드를 구분할 뿐입니다. 따라서 Chrome이나 Powerpoint와 같은 완벽하게 합법적인 프로그램이 있고 EMET 라이브러리에 의해 캡슐화되고 보호되는 경우에도 일부 불법 명령으로 인해 오작동하는 경우(대부분 실수와 엉성한 프로그래밍 관행 또는 레거시 제약으로 인해 도입될 가능성이 있음) EMET 실행을 차단하고 프로그램을 종료합니다.

    이것은 EMET 아이디어를 보안 도구로 만듭니다. 일단 적절하게 구성되면 실행 후 잊어버리는 솔루션입니다. 가볍고 비간섭적이며 매우 효율적이고 스마트합니다. 실행 품질 관점에서 소프트웨어를 보는 개념은 나쁜 프로그램을 블랙리스트에 올리는 것보다 훨씬 현명합니다.

    EMET는 또한 DEP, SEHOP, ASLR 등을 포함하여 Windows에서 사용할 수 있는 시스템 수준 보안 메커니즘과 함께 작동합니다. 매우 깔끔하고 매우 편리하며 매우 유용합니다.

    EMET 사용 방법에 대한 자세한 자습서를 작성했습니다. 그것은 프로그램의 버전 4로 만들어졌지만 지침은 이후 버전에 대해 100% 사실이고 정확하며 완화 툴킷에 대한 나의 마지막 검토는 버전 5.5에 있습니다. 다양한 개념과 보호에 익숙해질 수 있도록 해당 내용을 읽어 보십시오.

    Windows 10 악용 방지 - 자습서

    하지만 더 이상 설치할 수 없습니다:

    Windows 10 악용 방지

    EMET의 기능은 이제 Windows 10 빌드 1709 내에서 기본 제공 기능으로 사용할 수 있습니다. Windows Defender 보안 센터를 통해 관련 UI에 액세스할 수 있습니다. 왼쪽의 사이드바에서 마지막에서 두 번째 아이콘을 클릭하고 목록 끝까지 아래로 스크롤한 다음 Exploit Protection 설정을 클릭합니다.

    새 UI는 EMET에 비해 단순하며 현재 활성화한 항목에 대한 가시성이 떨어지기 때문에 사용하기 더 어렵습니다. 또한 앱 및 활성화된 완화에 대한 전체 매트릭스 스타일 보기가 없습니다. 그러나 인체 공학적 고려 사항은 제쳐두십시오. 원시 기능에만 집중합시다. 실제 인터페이스가 어떻게 개선될 수 있고 개선되어야 하는지는 나중에 다룰 것입니다.

    시스템 설정

    기본 보기에는 시스템 설정이 나열됩니다. 이전 운영 체제와 마찬가지로 Windows 10에는 코드의 악의적인(잘못 읽거나 불법적인 읽기) 실행을 방지하기 위한 몇 가지 낮은 수준의 메커니즘이 제공됩니다. 다시 말하지만, 우리는 구체적으로 맬웨어를 말하는 것이 아니라 잠재적으로 시스템 충돌, 불안정 등을 유발할 수 있는 모든 코드를 말하는 것입니다.

    Windows 10과 함께 제공되는 6가지 보호 기능에는 CFG, DEP, 필수 ASLR, 상향식 ASLR, SEHOP 및 힙 무결성이 포함됩니다. 이는 Windows가 이전에 가졌던 것과 대략 동일하지만 기본 커널 구조에서 일부 변경이 있었기 때문에 정확한 1:1 변환은 없습니다. 기본적으로 이러한 모든 보호 기능은 켜져 있습니다.

    프로그램 설정

    두 번째 범주를 클릭하면 현재 악용 방지 메커니즘이 적용되는 개별 프로그램 목록이 확장됩니다. 재정의가 있는 프로그램만 나열됩니다. 프로그램에 시스템 기본값과 일치하는 구성이 있으면 추가되지 않습니다.

    Windows 10에는 특정 재정의를 포함하여 이미 나열된 여러 응용 프로그램이 함께 제공됩니다. 지금은 최적의 보안 대 호환성을 위해 Microsoft에서 구성한 대로 그대로 두어야 합니다.

    경로나 이름으로 새 프로그램을 추가할 수 있습니다. 후자는 디스크에 설치된 위치에 관계없이 특정 실행 파일 이름과 일치하는 특정 응용 프로그램의 모든 버전을 보호할 수 있으므로 더 좋습니다.

    프로그램을 추가하면 길고 다소 혼란스러운 사용 가능한 완화 목록과 함께 익스플로잇 방지 구성을 사용자 지정할 수 있는 새 창이 팝업됩니다. 이제 개별적으로 완화를 켜고 끌 수 있습니다. 이러한 보호 중 일부는 기본적으로 꺼져 있고 나머지는 일반적으로 앞에서 언급한 시스템 구성과 일치하여 켜져 있음을 알 수 있습니다. 따라서 기본값을 재정의할 수 있습니다.


    사용 가능한 15가지 완화가 있으며 활성화하면 시스템 기본값보다 우선합니다. 감사를 허용하는 옵션도 있습니다. 기본적으로 예외가 발생하면 시스템에서 이를 알리고 프로그램을 수동으로 닫거나 종료해야 합니다. 그렇지 않으면 시스템은 완화와 일치하는 불법 명령으로 프로그램을 종료합니다.

    구성 내보내기 및 가져오기

    이제 흥미롭고 까다로운 부분입니다. 새로운 메커니즘은 더 번거로운 인터페이스와 함께 제공되기 때문에 프로그램 구성이 어려워집니다. 각각 최대 15개의 완화 기능이 있는 20-30개의 프로그램을 말하고 이를 분류하는 데 많은 마우스 클릭이 필요합니다.

    다행스럽게도 XML 구성 파일을 사용하여 보호 기능을 더 빠르게 업데이트할 수 있습니다. 목록에서 프로그램을 추가 및 제거하고 특정 완화를 조정하고 필요한 설정을 훨씬 빠르고 효율적으로 수행할 수 있습니다. 이렇게 하려면 구성 파일의 기본 형식을 이해해야 합니다.

    기본 인터페이스에서 설정 내보내기를 클릭하고 XML 파일을 디스크 어딘가에 저장합니다. 텍스트 편집기 내에서 열고 구성과 다른 지시문 및 값의 의미를 간략하게 살펴보겠습니다.

    구성 파일 형식

    검토해 보겠습니다.


    <루트>
    <시스템 구성>
    OverrideForceRelocateImages="false">


    OverrideExtensionPoint="false">

    ...

    다음은 실제 구성의 처음 몇 줄입니다. 들여쓰기는 거의 모든 다른 언어와 마찬가지로 시작 위치와 종료 위치를 시각적으로 구분하는 데 도움이 됩니다. 상단에 XML 선언이 있습니다. 그런 다음 기본적으로 시스템 및 애플리케이션 구성을 포함할 블록을 정의하는 루트 섹션이 있습니다.

    시스템 구성은 SystemConfig에 의해 선언됩니다. 애플리케이션은 AppConfig에 의해 선언됩니다. 응용 프로그램 이름은 Executable 변수에 의해 선언됩니다. 그런 다음 ExtensionPoints, Fonts, Payloads, DynamicCode 등과 같은 다양한 유형의 완화가 있습니다. 예를 들어 추가된 응용 프로그램의 거의 전체 목록에는 다음과 같은 내용이 포함됩니다.


    <엄격한 핸들
    활성화="참"
    OverrideStrictHandle="거짓">

    <시스템콜
    DisableWin32kSystemCalls="거짓"
    OverrideSystemCall="거짓"
    감사="참">

    <확장점
    DisableExtensionPoints="참"
    OverrideExtensionPoint="거짓">

    <동적 코드
    BlockDynamicCode="거짓"
    AllowThreadsToOptOut="거짓"
    OverrideDynamicCode="거짓"
    감사="참">

    <글꼴
    DisableNonSystemFonts="거짓"
    감사 전용 ="거짓"
    OverrideFontDisable="거짓"
    감사="참">

    <이미지로드
    BlockRemoteImageLoads="거짓"
    OverrideBlockRemoteImageLoads="거짓"
    BlockLowLabelImageLoads="거짓"
    OverrideBlockLowLabel="거짓"
    AuditRemoteImageLoads="참"
    AuditLowLabelImageLoads="true">

    <페이로드
    EnableExportAddressFilter="참"
    OverrideExportAddressFilter="거짓"
    AuditEnableExportAddressFilter="참"
    EnableExportAddressFilterPlus="참"
    OverrideExportAddressFilterPlus="거짓"
    AuditEnableExportAddressFilterPlus="참"
    EnableImportAddressFilter="참"
    OverrideImportAddressFilter="거짓"
    AuditEnableImportAddressFilter="참"
    EnableRopStackPivot="참"
    OverrideEnableRopStackPivot="거짓"
    AuditEnableRopStackPivot="참"
    EnableRopCallerCheck="참"
    OverrideEnableRopCallerCheck="거짓"
    AuditEnableRopCallerCheck="참"
    EnableRopSimExec="참"
    OverrideEnableRopSimExec="거짓"
    AuditEnableRopSimExec="참">


    당분간 실제 값은 무시하십시오. 세 가지 중요한 변수를 이해해 봅시다:

    값 - 참/거짓일 수 있으며 완화가 활성화되었는지 여부를 정의합니다.

    재정의 - 생각한 것과 달리 지정된 값이 시스템 기본값을 재정의하는지 여부는 알려주지 않습니다. 아니요. 그것은 이미 의도적으로 설계된 것입니다. 이 변수가 true로 설정되면 UI를 통해 설정을 편집할 수 없음을 의미합니다. 특히 false는 Defender Security Center를 통해 제어할 수 있음을 의미하고 true는 그렇지 않음을 의미하기 때문에 다소 혼란스럽습니다. 이 변수를 무시하는 것이 가장 좋습니다.

    감사 - 프로그램이 감사 모드에서 실행되는지 전체 강제 모드에서 실행되는지 여부.

    그래서 우리는 기본을 준비했습니다. 이제 실제로 구성 파일을 만든 다음 익스플로잇 목록으로 가져옵니다. 그리고 우리가 수행한 모든 힘든 작업을 잃고 싶지 않기 때문에 실제로 이전 EMET 구성을 가져옴으로써 이를 수행할 것입니다.

    이전 EMET 구성 사용

    이제 실제로 Powershell 명령줄을 사용하여 일부 작업을 수행합니다. 즉, EMET 구성 파일을 새 형식으로 변환한 다음 가져옵니다. 이러한 명령에는 현재 해당하는 GUI가 없습니다. Powershell 및 관리자 액세스 권한이 필요합니다. 어쨌든 EMET 파일은 다음과 같이 표시됩니다.


    <설정>







    <감소 활성화="true" />
    <감소 활성화="true" />
    <감소 활성화="true" />
    <완화 활성화="true" />

    나는 이것이 훨씬 더 깨끗하고 좋은 형식이라고 생각합니다. 신경 쓰지 마. 이제 이 구성 파일을 변환해 보겠습니다. 이를 수행하는 방법에 대한 온라인 설명서를 읽으면 다음 명령이 필요합니다.

    ConvertTo-ProcessMitigationPolicy -EMETFilePath emetconfig.xml -OutputFilePath newconfig.xml

    많은 오류가 발생했습니다:

    오류:어떤 이유로 Win10 설정을 읽어야 합니까?:PinRuleMember
    오류:어떤 이유로 Win10 설정을 읽어야 합니까?:활성
    오류:어떤 이유로 Win10 설정을 읽어야 하나요?:PinnedSite
    오류:어떤 이유로 Win10 설정을 읽어야 합니까?:도메인
    오류:어떤 이유로 Win10 설정을 읽어야 합니까?:PinRuleMember
    오류:어떤 이유로 Win10 설정을 읽어야 합니까?:활성

    분명히 Windows 10 이전 규칙의 인증서에 대한 모든 고정 규칙은 새 형식과 호환되지 않습니다. 이러한 구성을 가져오려고 하면 실패합니다. 변환을 다시 수행하기 전에 XML을 정리해야 합니다.

    <피닝>

    <핀룰>
    {392c02ca-a7dd-49e3-888f-7fb505de9333}
    <이름>FacebookCA
    ...

    참고:특히 여러 운영 체제 간에 이동하는 경우 EMET와 새로운 악용 방지 메커니즘 간에 정확한 1:1 일치는 없습니다. 내 권장 사항은 이전 구성을 조언으로만 사용하는 것입니다.

    따라서 변환된 파일은 앱 완화 측면에서 다음과 같이 표시됩니다.

    <앱 구성
    실행 가능="AcroRd32.exe">
    활성화="참"
    EmulateAtlThunks="거짓"/>
    ForceRelocateImages="거짓"
    RequireInfo="거짓"
    상향식 ="참"
    하이엔트로피="거짓"/>
    <엄격한 핸들
    활성화="거짓"/>
    <시스템콜
    DisableWin32kSystemCalls="거짓"
    감사="거짓"/>
    <확장점
    DisableExtensionPoints="거짓"/>
    <동적 코드
    BlockDynamicCode="거짓"
    AllowThreadsToOptOut="거짓"
    감사="거짓"/>
    활성화="거짓"
    SuppressExports="거짓"
    StrictControlFlowGuard="거짓"/>
    MicrosoftSignedOnly="거짓"
    AllowStoreSignedBinaries="거짓"
    EnforceModuleDependencySigning="거짓"
    감사="거짓"
    AuditStoreSigned="거짓"
    AuditEnforceModuleDependencySigning="false"/>
    <글꼴
    DisableNonSystemFonts="거짓"
    감사="거짓"/>
    <이미지로드
    AuditPreferSystem32="거짓"
    AuditLowLabelImageLoads="거짓"
    AuditRemoteImageLoads="거짓"
    PreferSystem32="거짓"
    BlockLowLabelImageLoads="거짓"
    BlockRemoteImageLoads="거짓"/>
    <페이로드
    EAF모듈=""
    EnableExportAddressFilter="참"
    AuditEnableExportAddressFilter="거짓"
    EnableExportAddressFilterPlus="참"
    AuditEnableExportAddressFilterPlus="거짓"
    EnableImportAddressFilter="거짓"
    AuditEnableImportAddressFilter="거짓"
    EnableRopStackPivot="참"
    AuditEnableRopStackPivot="거짓"
    EnableRopCallerCheck="참"
    AuditEnableRopCallerCheck="거짓"
    EnableRopSimExec="참"
    AuditEnableRopSimExec="거짓"/>
    <세홉
    활성화="참"
    TelemetryOnly="거짓"
    감사="거짓"/>
    <힙
    TerminateOnError="true"/>
    DisallowChildProcessCreation="false"
    Audit="false"/>

    Application template

    Most of the mitigations imported from EMET will be set to false unfortunately - and the system ones will no longer fully match. So my recommendation is as follows:the six system mitigations cover the basics. You can also enabled an additional six mitigations that seem to match 1:1 between EMET and new protection mechanism, including:EAF, EAF+, IAF, StackPivot, CallerCheck, and SimExec. Therefore our basic template for applications, based on previous usage becomes:



     
         EnableExportAddressFilterPlus="true"
       EnableImportAddressFilter="true"
       EnableRopStackPivot="true"
       EnableRopCallerCheck="true"
       EnableRopSimExec="true">
     

     

    We can extend this with fonts protection (the text is formatted for visual clarity):



     
         AuditOnly="false"
       OverrideFontDisable="false"
       Audit="false">
     

         EnableExportAddressFilterPlus="true"
       EnableImportAddressFilter="true"
       EnableRopStackPivot="true"
       EnableRopCallerCheck="true"
       EnableRopSimExec="true">
     

     

    And this is a template section you can use as your baseline:







    Real-life usage and examples

    All right, so far, we have covered the new UI, system and program settings, overview of new exploit mitigations, how to export configuration files, how to convert old EMET settings, and now we will import our app templates and use them.

    We will use our app template from above to quickly and elegantly add new applications into the system list, bearing in mind that system settings are best left at their defaults, and they already cover a great deal, plus there are six other mitigations that closely match past configurations, and are likely to work well. This is the MAIN reason why I have chosen this baseline, plus the fonts, which make simple sense, and also go hand in hand with past vulnerabilities on this issue.

    There are other mitigations that we could potentially enable, but unless you fully understand what you're doing, you may cripple your programs. In some cases, even the developers of software will NOT know what their applications are doing wrong, so it is quite possible you won't find an easy answer.

    • ACG, low integrity and remote images - should be okay.
    • Code integrity guard - unless signed by Microsoft, images won't run - this is basically Windows 10 S. Not recommended.
    • Extension points - very likely to cause problems in how software runs.
    • Disable system calls - highly likely to cause problems.
    • Child processes - will definitely cripple programs.
    • Handle usage - likely to cause problems with sloppily designed software.

    The rest we already have covered - six basics, six old mitigations, fonts, and potentially three written in the first bullet, with the rest best left alone.

    Import new configuration

    This is done as follows, again from Powershell, and with admin credentials:

    Set-ProcessMitigation -PolicyFilePath .\config.xml

    Configuration file contents

    Based on our template, we can add the applications inside the file. You can either create a single configuration with several programs listed inside and then import it once, or make an per-app template and perform multiple imports. It makes no difference.

    What you need to take into account is:1) you can do with the Security Center running, but it will NOT show the changes on the fly; the config is loaded once and/or whenever you make changes through the UI 2) old app settings will be removed with the new ones.

    Running and using exploit protection

    I tested with the following programs:Firefox, LibreOffice, VLC, IrfanView, Notepad++, and these run without any problems, including updates. Google Chrome would not run with ANY mitigation enabled except the fonts - both the pages and extensions kept crashing. This is in contrast to EMET behavior. Like I said, there's no GOLDEN list on what works and what does not, but I believe you can have 7/15 and maybe even 10/15 mitigations enabled, with code signing, child processes and system calls disabling really being unnecessary. That leaves only two mitigations that might need closer look:extension points and handle usage. Pretty good, I'd say.

    Edit and tweak configuration

    You can always go back and make changes - also through GUI after you've imported the bulk of your configuration, and now you just need fine tuning. If things do not work, you can always remove an entry and start fresh.

    Overzealous protection

    If you go wild, and I tried, just to see what gives, you may completely cripple your programs, and they won't run. It's all too easy to do this, so please be utterly careful, and make sure you understand what you're doing. This is a long-term investment. Do it well once and you won't have problems down the road.

    Additional reading

    You may also want to check these official Microsoft articles:

    Apply mitigations to help prevent attacks through vulnerabilities

    Customize exploit protection

    결론

    자. A very thorough, hands-on, real-life guide on how to use the new exploit protection mechanism in Windows 10. We didn't just blindly look at the list and wonder what magic happens behind the scene, we went behind the scene, and got ourselves autographs on our chests.

    On a more technical note, we learned about the exploit mechanism, the new UI, system and program settings, types of exploits and what they roughly do, how to export and import XML configuration files, we created our work template, we converted and used our old EMET settings, we tried to match the level of protection that EMET gave us while still maintaining sane and practical functionality with most programs and most mitigations. We have about 80-90% coverage without breaking things. There are no guarantees in this process, but it's so much ahead of any conventional security software.

    The mitigation protection remains Microsoft's best product by far, and hopefully, they will improve the workflow so it is more accessible to advanced users. For the time being, you have this guide, and hopefully, it will make your journey into the post-EMET world of mitigations simpler and faster. And your apps will still work! 또 봐요.

    If you like this tutorial, then give some love back, support Dedoimedo. 오른쪽?

    건배.