'보안'에 해당되는 글 42건

  1. 2012.09.26 Microsoft IIS 환경에서의 modsecurity 설치,설정방법
  2. 2012.09.26 modsecurity를 활용한 웹보안 강화
  3. 2012.09.26 [sql injection]sqlmap
  4. 2012.09.25 [sql injection]Blind SQL Injection Perl Tool(bsqlbf)
  5. 2012.09.25 [sql injection] 자주 사용되는 sql인젝션 도구 15종.
  6. 2012.09.21 [시스템로그분석]해킹 피해와 보안 추적의 결정적 파일
  7. 2012.09.20 Windwos시스템 보호 설정도구(EMET)
  8. 2012.09.19 보안전문가 기고(2). 침투시험 가치 극대화하기

Microsoft IIS 환경에서의 modsecurity 설치,설정방법

|

Modsecurity의 IIS 설치 msi파일을 통해 Microsoft IIS에서도 Modsecurity 웹서버 보안강화도구를 사용할 수 있다.

아래는 IIS에서 Modsecurity를 설치, 설정하는 방법이다. 만약, IIS에서 Modsecurity를 사용하고자 한다면, 참고가 되시길..

또한, Modsecurity를 설치하기 위해 사전에 설치해야 하는 목록에 추가적으로 .NET Framework이 필요하다.(참고하세요)

 

Installation for Microsoft IIS

The source code of ModSecurity’s IIS components is fully published and the binary building process is described (see mod_security/iis/winbuild/howto.txt). For quick installation it is highly recommended to use standard MSI installer available from SourceForge files repository of ModSecurity project or use binary package and follow the manual installation steps.

Manually Installing and Troubleshooting Setup of ModSecurity Module on IIS

Prerequisites

Before installing ModSecurity one has to install Visual Studio 2010 Runtime:

Installation Steps

Download binary package and unzip the content to a separate folder:

The installation process of ModSecurity module on IIS consists of three parts:


1. Copying of binaries: copyfiles.bat
The following binary files are required by ModSecurity module and by default should be copied to %windir%\system32\ (32-bit binaries) and/or %windir%\SysWOW64\ (64-bit binaries):
  • libapr-1.dll
  • libapriconv-1.dll
  • libaprutil-1.dll
  • libxml2.dll
  • lua5.1.dll
  • ModSecurityIIS.dll
  • pcre.dll
  • zlib1.dll
The mlogc tool can be copied to any place, together with libcurl.dll:
  • libcurl.dll
  • mlogc.exe


2. Registering of the module: register.bat
An IIS module must be properly registered before it can be used by web applications. The following command, executed in %windir%\system32\inetsrv, performs the registration:
appcmd.exe install module /name:ModSecurityIIS /image:%windir%\system32\inetsrv\modsecurityiis.dll
The registration process itself is described with details in the following articles:


3. Extending of the configuration schema.
The last step extends IIS configuration schema with ModSecurity entities, using ModSecurity.xml file provided in the binary:
iisschema.exe /install ModSecurity.xml
and iisschema.exe tool. More information about the tool and this step is available here:

Configuration

After the installation the module will be running in all websites by default. To remove it from a website add to web.config:
<modules>
    <remove name="ModSecurityIIS" />
</modules>
To configure module in a website add to web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <ModSecurity enabled="true" configFile="c:\inetpub\wwwroot\xss.conf" />
    </system.webServer>
</configuration>
where configFile is standard ModSecurity config file.


Events from the module will show up in "Application" Windows log.

Common Problems

If after installation protected website responds with HTTP 503 error and event ID 2280 keeps getting logged in the application event log:
Log Name:      Application
Source:        Microsoft-Windows-IIS-W3SVC-WP
Event ID:      2280
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Description:
The Module DLL C:\Windows\system32\inetsrv\modsecurityiis.dll failed to load.  The data is the error.

most likely it means that the installation process has failed and the ModSecurityIIS.dll module is missing one or more libraries that it depends on. Repeating installation of the prerequisites and the module files should fix the problem. The dependency walker tool:

can be used to figure out which library is missing or cannot be loaded.

 

위 내용에 더불어 아래와 같은 msi 설치파일도 있네요..;; 갠히 고생했네;;

아래 파일을 통한 설치도 해보시면 좋겠네요.

 

ModSecurityIIS_2.7.0-rc3.zip

 

설치 후, 설정은 아래 사이트를 참조하세요,,

http://blogs.technet.com/b/srd/archive/2012/07/26/announcing-the-availability-of-modsecurity-extension-for-iis.aspx

And

modsecurity를 활용한 웹보안 강화

|

<Modsecurity>

[Modsecurity]웹서버 Apache의 모듈로 동작하는 공개 SW 웹애플리케이션 방화벽(?)정도의 웹서버 보안강화도구이다. Modsecurity는 서버측에서 접근하는 요청(Request) 트래픽or패킷에 대한 Ruleset을 통해 정의된 트래픽or패킷을 자동으로 차단하는 식으로 동작한다.

 

[Modsecurity의 출현배경]

□ 웹 애플리케이션 취약점 보안을 위한 대대적인 소스 코드 수정이 필요하게 됨.

□ 대 다수의 중소기업이 개발인력 미비로 지속적인 침해사고에 대응 못함.

□ 기존 애플리케이션에 수정 없이 이미 존재하는 취약점에 대하여 능동적인 대응이 필요하게 됨.

 

[Modsecurity의 특징]

□ 웹페이지 주요 취약점 해결을 위해 아파치 모듈로 개발/공개된 웹보안 강화도구

□ 웹에서의 요청(Request)을 웹서버 또는 다른 모듈들이 처리하기 전에 분석/필터링

□ 우회 공격용 스트링("//","\/",".." 등)을 제거하고 인코딩된 URL을 디코딩하는 우회방지기술 적용

□ HTTP 프로토콜을 이해 가능한 엔진을 적용하여 정밀한 필터링 수행

□ GET/POST 메소드 요청분석

□ 모든 요청에 대한 상세 로깅가능이 가능하며, 차단 기능 비활성을 통해 침입탐지 역활수행

□ HTTPS를 통한 공격 필터링 가능

 

[Windows Modsecurity 설치방법]

<설치방법>

1. Modsecurity 설치에 필요한 파일(libxml2.dll, mod_security2.so)을 Apache "Modules" 폴더내에 복사

2. Ruleset파일을 Apache conf 폴더에 복사

<설치 전 주의사항>

※ 윈도우 계열에서 modsecurity를 설치하기 위해서는 Apache 2.2.x 이상 버전에서만 설치 가능

※ VC 2008 Redistributable Package를 설치해야 정상적으로 동작 (윈도우용 modsecurity는 visual studio 2008에서 개발되었기 때문)

※ VC 2008 Redistributable Package 다운로드: http://www.microsoft.com/en-us/download/details.aspx?id=29

<설치 후 주의사항>

※ Apache는 기본저긍로 mod_unique_id.so 모듈이 Disable 되어 있기 때문에 이 모듈을 Enable로 설정변경. (unique_id 모듈은 유닉스 환경과 마찬가지로 modsecurity의 정상적인 필터링을 가능하게 해주는 모듈이다.)

 

[Linux Modsecurity 설치방법]

<설치방법>

1. yum을 통한 설치: yum install mod_security ( or source build )

2. 방화벽에서 사용할 Ruleset 추가/생성

3. 서비스 시작

 

아래 URL은 Modsecurity wiki 페이지이다. 상세한 내용은 아래에서 참고하시길 ...

 

http://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Main_Page

 

And

[sql injection]sqlmap

|

<sqlmap>

 

[sqlmap]은 파이썬으로 개발된 Commend 라인 기반의 sql 취약성 점검도구이다.

당연하게도 이 도구는 윈도우/리눅스 모두에서 동작하며(단, 파이썬이 설치된 시스템에서..) Mysql, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB등을 대상으로 한 점검에 매우 강력한 도구이다.

아래와 같은 단점이 있는 듯 보이지만 다양한 DB 점검이 가능하다는 점과, Command 기반의 도구를 잘 활용하면 얻을 수 있는 이점들을 충분히 얻을 수 있을 것같다.

□ 타 도구에 비해 점검시간이 오래걸림.

□ 다양한 DB구성 시, 검사내용의 신뢰도 떨어짐.

 

<sqlmap injection technic>

□ Boolean-based blind

□ Time-based blind

□ Error-based Union query

□ Stacked queries

□ Out-of-band

 

아래는 sqlmap 홈사이트이며, 좀 더 자세한 내용은 홈사이트의 내용을 참조하길 바란다. (물론 아래 위치에서 다운로드도 가능하다. )

★ http://sqlmap.org/

 

 

<Usage>

And

[sql injection]Blind SQL Injection Perl Tool(bsqlbf)

|

<bsqlbf>

Python으로 작성된 Blind SQL Injection 도구

 

Usage:

 

다운로드:

 

bsqlbf.zip

 

첨부된 파일은 암호로 보호됩니다.

And

[sql injection] 자주 사용되는 sql인젝션 도구 15종.

|

No

Name

Description

1

SQLIer

취약점이 있는 URL 검사하고 사용자의 개입없이 SQL Injection 취약점을 익스플로잇하기 위해 필요한 정보를 점검.

2

SQLbftools

블라인드 SQL Injection 공격을 사용하여 MySQL 정보를 가져오는 시도를 하는 도구의 모음.

3

SQL Injection Brute-forcer 

SQL Injection 공격 취약점을 찾고 이를 이용하여 공격하는 자동화 도구입니다. 사용자가 작업하는 내용을 있으며, 블라인드 SQL 인젝션을 이용.

4

SQL Brute 

블라인드 SQL 인젝션 취약점을 사용하여 데이터베이스에서 데이터를 추출해내는 무작위 도구입니다. MS SQL 서버의 시간, 오류 기반으로 익스플로잇을 수행합니다. 오라클의 경우 오류를 기반으로 동작함.

5

BobCat 

SQL Injection 취약점의 잇점을 이용하는 감사 도구입니다. 사용자가 사용하는 애플리케이션이 액세스하는 테이블에서 데이터를 가져올 있습니다.

6

SQLMap

블라인드 SQL Injection 자동으로 수행하는 도구로 phthon으로 개발됨.

7

Absinthe

GUI 기반의 도구로 블라인드 SQL Injection 취약점에 이용하여 데이터베이스의 스키마와 목록을 자동화 과정으로 다운로드함.

8

SQL Injection Pen-testing Tool 

애플리케이션에서의 취약점을 찾아 데이터베이스를 점검하도록 설계된 GUI 기반의 도구. 

9

SQID 

SQL Injection Digger. 사이트의 통상적인 오류와 SQL Injection 찾는 명령행 기반의 도구. 페이지에서 SQL Injection 가능한 부분을 찾아내어 취약점을 입력하는 폼을 테스트.

10

Blind SQL Injection Perl Tool

bsqlbf SQL Injection 취햑한 사이트에서 정보를 가져오도록 작성된 스크립트.

11

SQL Power Injector 

웹페이지에서 SQL 명령어를 삽입하는 테스트를 수행.

12

FJ-Injector Framework 

애플리케이션에 SQL Injection 취약점이 있는지 검사하기 위해 디자인된 오픈 소스 무료 프로그램입니다. HTTP 요청을 가로쳐서 변경하기 위한 프록시 기능도 제공.

13

SQLNinja

MS SQL 서버를 엔드 데이터베이스로 사용하는 애플리케이션의 SQL Injection 취약점을 익스플로잇하는 도구.

14

Automatic SQL Injector 

SQLNinja 유사한 도구로, 오류 코드가 반환되는 SQL Injection 취약점을 자동으로 검색.

15

NGSS SQL Injector 

데이터베이스에 저장된 데이터를 액세스하기 위한 SQL Injection취약점을 이용하여 익스플로잇함.

And

[시스템로그분석]해킹 피해와 보안 추적의 결정적 파일

|

 

 

[책소개]

시스템을 운영함에 있어서 부수적으로 생성되던 각 기능별 로그의 기능을 설명하고 있다는 점과 해당 로그들을 제대로 분석할 수 있는 실질적인 방법을 제시하고 있다. 또한 관련 로그를 통하여 얻어낼 수 있는 정보의 메시지를 파악하여 시스템의 운영 실무에 바로 바로 적용하거나 문제점을 유추해낼 수 있도록 한다.

주력하고자 한 내용의 핵심은 현장에서 문제가 발생하였을 때의 답만 제공해 주기보다는 문제를 스스로 해결할 수 있는 방법을 제시함으로써 사용자 스스로의 능력을 배양시킬 수 있도록 하였다. 아울러 예제로 준비한 시스템은 다양한 UNIX 계열(SunOS, HP-UX, Solaris, Linux)의 시스템과 WINDOWS 시스템을 기준으로 하였고, 이러한 시스템들을 중심으로 사용되는 로그(LOG)에 대해 중점을 두었다.

 

[목차]

Part 01 시스템 로그 분석을 위한 준비
Section 01 로그 분석의 필요성
Section 02 침입자 탐지 체크 리스트 10
Section 03 로그 분석의 자세
Section 04 로그 관리 방법과 로그 파일 관리 지침
Section 05 시스템 관리자를 위한 기초 명령어 활용법

Part 02 로그의 종류와 시스템 별 현황
Section 01 사용자 로그
Section 02 시스템 로그
Section 03 시스템 별 로그 현황

Part 03 운영체제 별 로그의 종류와 분석 방법
Section 01 유닉스 계열 로그
Section 02 윈도우 계열 로그

Part 04 침해사고 발생 처리 시뮬레이션과 추가 정보
Section 01 해킹 피해 시스템 분석 절차
Section 02 Windows 시스템 침해사고 분석
Section 03 Windows IIS 웹 로그를 DB에 넣기
Section 04 리눅스에서 명령어 재설치하기

Part 05 아파치를 기반으로 한 웹 로그 분석
Section 01 웹 로그 분석의 개요
Section 02 접속 로그 분석 방법
Section 03 에러 로그 분석 방법

부록
Snort 설치와 운영
MRTG 설치와 운영
LSOF 설치와 운영

 

And

Windwos시스템 보호 설정도구(EMET)

|

EMET( Enhanced Mitigation Experience Toolkit )는 MS에서 무료로 제공되는 보안설정 도구이다. 이 도구는 소프트웨어의 취약성이 악용되지 못하게 하는 보안 유틸리티 도구로, 공격자가 소프트웨어의 취약성을 공격하기 위해 포함해야 하는 특수한 동작(행위)를 사전에 감지하여 사전에 차단하는 설정(기술)로 구성되어 있습니다.

또한, 이 도구의 사용은 모든 취약성에 대한 조치는 어렵다고 보여지나, 취약성의 악용을 어렵게 할 수 있습니다.

 

EMET 최신 버전 다운로드:

-> EMET v3 (http://blogs.technet.com/b/srd/archive/2012/05/15/introducing-emet-v3.aspx)

 

EMET 보호기능

- DEP (Dynamic Data Execution Prevention):

Heap이나 스택의 메모리에 위치한 공격자의 제어데이터 또는 shellcode를 실행하려는 시도를 프로세서 수준에서 거부시키는 기능 (즉, 설정된 데이터영역(read-only)에서 코드를 실행하려는 시도를 감지하고 종료시켜 버림)

- SEHOP (Structure Exception Handler Overwrite Protection):

스택 오버플로우 공격으로 부터 시스템을 보호. 이 기능은 OS에서 Exception Handler들을 호출하기 전에, Exception Record Chain을 확인/점검하는 기능

- ASLR (Mandatory Address Space Layout Ramdomization):

호출되는 모듈의 위치를 랜덤화함으로써 공격자가 취약한 DLL의 위치를 예측할 수 없도록 하는 기능

- Null page allocation:

사용자 모드에서 잠재적인 Null 역참조 문제를 방어하는 기능

- EAF (Export Address Table Access):

공격자의 페이로드에 필요한 인도우즈 APIs 조회 차단 ( 현재 시도되는 대부분의 shellcode를 차단 )

- Bottom-up randomization:

힙, 스택, 다른 메모리의 할당을 포함하여 기본주소를 랜덤화하는 기능

 

 

시스템 보호 설정 프로파일

- Maximum Security Settings: 최고수준의 보호

- Recommended Security Settings: 권장수준의 보호

- Custom Settings: 일반

 

지원하는 운영체제

  • Client Operating Systems
         Windows XP service pack 3 and above
         Windows Vista service pack 1 and above
         Windows 7 all service packs
  • Server Operation Systems
         Windows Server 2003 service pack 1 and above
         Windows Server 2008 all service packs
         Windows Server 2008 R2 all service packs

시스템별 지원하는 보안설정 구분

 

 

보안 설정 GUI

 

 System Configuration

 

Application Configuration

 

 

 

 

 

EMET는 위와 같은 기술로 공격자가 시스템의 취약성을 악용하려는 시도를 미연에 막고, 0-day를 포함하는 알려지지 않은 새로운 형태의 공격에 대응할 수 있다.

또한, EMET는 보호설정이 적용된 EMET 프로그램의 패키지를 생성할 수 있기 때문에, 이를 통한 기업내 표준화된 보호설정을 지원할 수 있을 것으로 생각된다.

하지만, 그 강력한 기능으로 인해 시스템에 자주 접근하는 응용프로그램에는 위험요소가 존재할 수 있다. 따라서, 다양한 응용프로그램을 사용하는 사용자의 경우 많은 시나리오 테스트와 커스터마이징이 필요할 것으로 생각된다.

 

아래에는 추가로, EMET의 User's Guide를 첨부한다.

 

EMET User's Guide.pdf

 

아래는, EMET도구에 대한 이해를 돕기위한 동영상입니다.

http://technet.microsoft.com/en-us/security/ff859539.aspx

 

And

보안전문가 기고(2). 침투시험 가치 극대화하기

|

침투시험 가치 높이는 Tip 5...조직의 보안수준 개선이 최종목적돼야

SANS연구소는 글로벌 보안연구 및 교육기관으로 연구활동과 함께 다양한 교육 프로그램을 마련해 전 세계적으로 활동하고 있다. 이에 본지에서는 최근 사이버 공격에 대한 이해도를 높이고, 글로벌 보안위협 추세와 대응방안을 살펴보기 위해 SANS코리아의 협조로 SANS연구소의 유명 보안전문가들의 기고를 3회에 걸쳐 연재한다. [편집자 주]


연재순서-----------------------------------------

1. 시뮬레이션 환경에서 APT 공격결과 분석 - 롭 리

2. 침투시험 가치 극대화하기 - 브라이스 갤브레이스

3. 가상 환경에서 권한 상승 방법 - 스테판 심스

------------------------------------------------

[보안뉴스=브라이스 갤브레이스 SANS연구소] 많은 사람들이 자동화된 취약점 스캔과 차이가 거의 없는 수준 낮은 침투시험(Penetration Testing)으로 시장에 참여함에 따라 침투시험 사업이 위험에 빠지고 있다.


이에 여기에서는 침투시험 대상 기업 및 기관에 중요한 사업적인 가치를 주기 위해 침투시험 방법 및 결과 보고서를 작성하는 방법에 대해 설명한다. 여러분이 만약에 기업 내에서 침투시험을 하는 사람이라면 침투시험을 통해 사업적인 가치를 제공해 직업 안정성을 높이고 급여도 높일 수 있으며, 외부 제3의 회사를 대상으로 침투시험을 한다면 기업 가치를 제공해 경력개발은 물론 더 높은 가치를 인정받을 수 있다.


필자는 업무와 연관해 또는 해킹사고와 관련해 많은 기업의 침투시험 및 취약점 평가 보고서를 읽어보기도 했으며, 직접 침투시험 팀에서 침투시험을 수행하면서 팀원이 작성한 보고서를 검토하기도 했다. 그리고 항상 침투시험 결과가 좀더 의미 있도록 하기 위해서 고민했으며, 일주일에 2개 정도의 보고서를 읽으며 침투시험 결과가 효과적일 수 있도록 하기 위해 많은 시간을 보내고 있다.


하지만 대부분의 침투시험 전문가가 작성한 보고서 수준이 엉망인 경우가 많다. 일부는 취약점 스캐너 결과를 그대로 사용한 후, ‘침투시험 결과’라고 조금 좋게 수정한 수준이다. 일부 시장에서는 낮은 수준의 침투시험을 요구하기도 하지만, 일부에서는 침투시험에 비용을 지출함으로써 사업적 가치를 높여주기를 원하는 시장도 존재한다. 수준 낮은 침투시험만 시장에 만연해 침투시험의 가치를 낮춘다면, 침투시험 전문가의 수준도 계속 낮아질 것이다. 하지만 일부 기관은 수준 높은 침투시험을 원하고 있다는 것이 사실이다.


수준 높은 침투시험을 위해서 침투시험 실행 표준(PTES)을 이용하여 철저하고, 절차를 정해서 훌륭한 결과를 도출하고 있는 사람도 있다. 여기에서는 침투시험 보고서를 작성하는 방법을 통해 침투시험 결과를 바탕으로 사업적 가치를 최대화할 수 있는 방법을 설명한다. 좋은 보고서는 단순히 침투시험 결과를 기술하는 것이 아니라 가치를 제공할 수 있어야 하며, 그래서 조직의 보안수준을 개선하는 것이 최종 목적이다. 이 목적이 바로 수준 높은 침투시험을 위해 끊임없이 집중해야 하는 점이다.


# Tip 1. 단순히 셸이나 도메인 관리자 권한 획득이 중요한 것이 아니라 사업적 위험을 파악해야 한다.

침투시험 전문가는 컴퓨터의 셸(shell)에 접근을 하면 가슴이 쿵쿵 뛴다. 하지만 시스템을 해킹하는 것이 최종 목표가 아니다. 최종 목표는 발견한 취약점과 관련하여 회사에 미치는 사업적인 위험을 알아내는 것이다. 침투시험 후 보고서를 작성할 때 최종 목표를 항상 염두에 둬야 한다. 기업의 위험을 알아내고, 설명하며, 위험을 낮추는 방법에 대해서 고민해야 한다.


위험을 파악하기 위해서는 침투시험 전문가는 단지 하나의 컴퓨터가 아니라 조직 전체 환경에 대해서 이해하고 있어야 한다. 침투시험 전문가는 어떤 컴퓨터에서 셸을 획득하면 당장 ‘높은 위험’이라고 생각하지만, 실제 해커들의 생각은 다르다. 시스템 1대를 해킹하는 것은 이제 조직 네트워크의 문지방에 들어선 것이고, 해커들은 컴퓨터 그룹과 네트워크 전체를 보고 있다. 즉, 컴퓨터를 해킹한 후 공격목표 환경으로 이동하기 위해 준비를 한다.


목표를 위해 이동할 때 일부 침투시험 전문가는 윈도우 환경에서 도메인 관리자 권한을 함정으로 설정해 놓는다. 그러나 도메인 관리자에 접근하는 것도 단지 사업상의 위험을 설명하기 위한 수단이다. 침투시험 전문가가 셸에 접근하고, 도메인 관리자 권한을 획득했다고 설명하면 의사 결정을 하는 사람들은 이해를 하지 못한다. 침투시험 전문가가 이러한 과정을 통해 수백만 개의 민감한 의료정보 또는 기업비밀 정보에 접근할 수 있다는 의미를 보여줘야 한다.


조슈아 자브라 아브라함은 목표 지향적인 침투시험에 관한 글을 쓴 바 있는데, 거기에서 침투시험은 취약점을 발견하는 그 이상의 목적을 달성하는 데 초점을 맞춰야 한다고 했다. 아브라함은 원격에서 내부 시스템에 접근할 수 있다든지, 도메인 관리자 접근이 가능하다든지, 신용카드 정보에 접근이 가능하다는 목표를 언급했다. 필자도 목표 중심의 시험에 동의하며, 침투시험 전문가는 대상 조직에서 중요한 사업적인 문제(단순히 기술적인 문제가 아니라)에 대해서 내부 직원과 함께 목표를 정의할 것을 추천한다.


먼저 침투시험 범위를 정할 때 시스템 관리 직원에게 가장 중요한 정보와 자산이 무엇이고, 가장 두려워하는 것이 무엇인지 질문해 보아야 한다. 가끔씩 생각을 확장해 사이버 공격자가 실제로 하고자 하는 것이 무엇인지도 고민해 봐야 한다. 즉, 해킹을 당하면 민감한 데이터 해킹 등의 경제적 손실, 법률 위반, 고객 및 사업파트너에 의한 소송 가능성, 브랜드 및 평판 침해 및 생명 등의 물리적인 위협 등에 대해서 솔직하게 토론을 해보는 것이 좋다.


예를 들어 필자는 침투시험을 위해 한 제조회사와 토론했을 때, 해커들이 컴퓨터 인프라를 해킹했을 때 가장 큰 문제가 무엇인지에 대해서 토론하고 있었다. 회사 직원들은 웹사이트를 변조하는 것이라고 했다. 그래서 필자는 공격자는 내부 망에 접속하여 영업 자료나 사업 계획을 훔쳐가거나, 제조 장비를 해킹한 후 통제해 기계가 오동작하거나 멈추는 것이 가장 큰 문제가 아닌지 물었다. 그 때 직원들이 “그것이 가능한가요?” 라고 물었다. 그래서 “그것이 가능한지를 확인하기 위해 침투시험을 계획을 수립하자”고 말했다. 이것이 사업 중심적인 목표를 설정하는 것이다.

그림 1. 침투시험 전문가 C가 셸 획득, 도메인 관리자 권한 획득보다 사업 중심적인 목표를 설정


그림 1에서는 3가지 침투시험 방법을 보여주고 있다, 첫 번째 침투시험 전문가 A(녹색 화살표)가 윈도우 7이 설치되어 있는 시스템의 클라이언트 취약점을 공격해 컴퓨터의 셸에 접근한다. 그리고 심각한 취약점이 발견됐다고 보고하고 끝낸다.


2번째 침투시험 전문가 B(파란색 화살표)는 첫 번째 시험보다 좀더 깊이 들어간다. 첫 번째 취약점을 공격한 후 측면으로 이동해 해쉬 값을 덤프 받고, 패스-더-해쉬(Pass-the-hash) 공격을 수행하고, 도메인 관리자가 관리하는 컴퓨터에 접근한다. 이 시험에서 도메인 관리자 토큰을 확보하고, 보고서에 결과를 기술한다. 그리고 도메인 관리자 컴퓨터를 해킹했다고 주장한다. B는 A가 찾은 취약점과 관련된 일부 위험을 시험한 것이다.


세 번째 침투시험 전문가 C(빨간색)는 도메인 관리자 권한을 획득한 후 계속해서 이동한다. 그래서 굉장히 민감한 기업 비밀이 들어있는 컴퓨터에 접근한다. 세 번째 침투시험 전문가는 목표 환경에서 여러 가지 취약점으로 인해 발생할 수 있는 조직의 위험을 가장 잘 표현할 수 있다. 그래서 취약점을 조치할 수 있도록 경영진에게 가장 잘 설명할 수 있다.


A와 B보다 C가 침투시험을 더 잘한 것뿐만 아니라 민감한 기업비밀에 접근함으로써 사업적인 위험이 있다는 것을 보여주었다.

# Tip 2. 보고서를 읽는 사람이 누구인지 기억하라.

실력 있는 침투시험 전문가는 종종 다른 침투시험 전문가들에게 보여주기 위해 보고서를 작성하는 경우가 많다. 필자도 종종 이러한 유혹에 빠진다. 우리가 작성하는 보고서는 다른 침투시험 전문가에게 보여주기 위해서 작성하는 것이 아니다. 자랑하고 싶은 마음은 이해가 되지만, 피하는 것이 좋다. 우리가 작성하는 보고서는 이 보고서를 읽는 사람에게 가치를 제공해 주어야 한다.


보고서의 요약본을 읽는 사람은 바로 기업에서 의사결정을 하는 사람들이다. 의사결정을 하는 사람들이 자원을 할당하고, 발견된 문제점을 해결한다. 보고서 나머지 부분은 기업의 보안전문가 및 운영팀에게 최고의 가치를 제공할 수 있도록 작성되어야 한다. 그곳에 당신의 의견과 권고사항을 포함시켜 보안 인력 및 시스템 관리자가 취약점을 패치할 수 있도록 하는 것이 좋다.


# Tip 3. 권고사항에 ‘해결방법’을 제공하라.

취약점을 수정하도록 하는 권고사항에 모호한 수준으로 권고사항을 기술하는 것은 좋지 않다. 대신에 권고사항을 구현할 수 있도록 실제단계별 패치 방법을 기술해야 한다. 바로 따라할 수 있는 명령어 또는 GUI 스크린샷을 예로 포함하는 것이 좋다.


그림 2와 같이 침투시험 전문가가 발견한 취약점 예제를 생각해 보자. 조직에서 NTLMv1을 사용하는 윈도우에서 오래되고 취약한 인증기능을 사용하고 있다고 가정해 보자. 취약점 스캐너 결과를 단순히 복사해서 붙이는 것은 발견사항의 가치를 낮추는 것이다. 그럼 어떻게 해야 하나?


단순히 NTLMv1을 NTLMv2로 바꾸라고 하는 것보다 발견한 취약점을 좀더 가치가 있도록 설명하기 위해서 서버에 ‘HKEY_LOCAL_MACHINE\SYSTEM\Current

ControlSet\Control\LSA\LMCompatibilityLevel’의 레지스티리 키 값을 5로 설정하도록 말하는 것이다. 이렇게 권고하면 단순히 NTLMv2로 바꾸라고 하는 것보다 확실히 효과가 있다. 하지만 여전히 직원이 실제 처리하는 방법과 대해서는 의문이 남는다. 좀더 가치 있게 하려면 발견된 취약점으로 영향 받는 서버에 다음과 같이 명령어를 실행하도록 알려주는 것이다.


C:\> reg add hklm\system\currentcontrolset\control \lsa /v lmcompatibilitylevel /t REG_DWORD /d 0x5

그림 2. 수준 높은 권고사항을 기술하는 방법


이보다 좀더 가치 있게 하기 위해서는 그룹정책을 사용해서 발견된 취약점을 구현하는 상세한 방법을 포함하고, 전체 윈도우 환경에 적용하는 것이다. 즉, 항상 발견한 취약점을 수정할 수 있도록 하고, 수정하는 방법에 대해서 답을 줄 수 있어야 한다. 그런데 너무 상세한 방법을 제공하면 직원들이 검증 없이 그대로 따라할 위험이 있다. 잘못 적용하면 시스템이 망가질 수 있다. 그래서 각각 발견된 취약점에 다음과 같은 문구를 포함하는 것이 좋다.


“위의 변경은 대부분의 환경에서 적용한 사례이지만, 특정 환경에서 알려지지 않은 결과가 발생할 수 있습니다. 그렇기 때문에 권고한 변경은 사전에 시험환경에서 먼저 평가가 된 후 적절한 공식적인 변경 통제 프로세스를 통해 실행되어야 합니다. 사전에 시험되지 않고 바꾸는 경우, 실제 환경의 시스템에 문제가 발생할 수 있습니다.”


# Tip 4. 권고사항에 ‘치료 후 확인방법’을 제공하라.

이제 침투시험 결과를 차별화하고 가치를 높일 수 있는 가장 중요한 방법에 대해서 설명할 것이다. 권고사항에 취약점을 치료할 수 있는 ‘how-to’만 포함하지 말고, 치료가 적용됐는지 조직에서 확인하는 방법도 포함하는 것이다.


이렇게 하면 취약점이 패치됐다는 확신을 가질 수 있다. ‘how-to-check’를 설명하는 것은 좀 장황할 수 있지만, 치료를 확인하기 위해 1~2개의 명령어, GUI 스크릿샷 또는 도구 구성방법을 제공할 수 있다. 침투시험 전문가가 실력 있는 보안전문가 또는 많이 알고 있는 시스템 관리자가 수행할 수 있을 정도의 권고사항을 기술해야 한다. 우리가 작성한 권고조치를 다른 침투시험 전문가가 수행할 수 있도록 작성하면 안 된다.


확인하는 과정을 포함하는 것이 어렵지 않다. 앞서 언급한 NTLMv2 권고사항에 대해서 침투시험 전문가 다음과 같은 권고사항을 추가하면 된다.


“다음과 같은 명령어를 실행하여 세팅 값을 확인할 수 있음”


C:\> reg query hklm\system\currentcontrolset \control\lsa /v lmcompatibilitylevel


실행하면 출력값이 5가 나오는 것을 확인하면 되며, 이 말은 NTLMv2를 사용하도록 시스템이 구성됐다는 것을 의미한다.


다양한 패치를 구성하거나 적용하기 위해서 ‘wmic qfe’ 및 ‘wmic product’와 같은 윈도 명령어가 유용하다. 리눅스에서는 cat, rpm, --version 옵션으로 프로그램을 확인할 수 있다.


복잡한 권고사항일 경우 침투시험 전문가가 아닌 사람에게 치료를 확인하도록 하는 것은 쉬운 일이 아니다. 예를 들어 크로스 사이트 스크립팅(XSS)를 방어하기 위해 제대로 구현이 됐는지 시험하는 절차를 만드는 것은 어려운 일이다. 새로 만들어진 필터를 시험하기 위해 단순히 특정 시험용 XSS 문자열을 입력해 본다면, 필터는 시험용 문자열만을 제거할 가능성이 있어 조직에서는 보안수준을 잘못 이해할 수 있다.


왜냐하면 다른 XSS 문자열은 여전히 동작하여 위험이 존재할 수 있기 때문이다. 그래서 XSS에 대해서는 단순히 몇개 시험용 문자열을 시험하는 것보다 조직에서 특정 무료 XSS 스캐닝 도구를 실행해 위험한 문자열을 필터링하는지 시험하는 것이 좋다.


필자가 처음으로 시험 보고서에 취약점 치료 확인을 위한 권고사항을 추가하자, 일부 침투 시험 회사에서 항의했다. 이렇게 하면 보고서 양과 비용이 증가한다는 것이었다. 하지만 이러한 정보를 추가하는 것은 권고사항별로 몇 분이 더 소요되며, 템플릿화 할 수 있다. 이 말은 보고서는 약 10% 더 증가하지만 목표 시스템에 대한 가치는 훨씬 더 증가한다는 얘기다.


# Tip 5. 공격 영향 및 가능성을 기준으로 발견사항의 우선순위를 정하라.

침투시험 보고서 대부분은 각각의 발견사항에 대해서 높음/중간/낮음(HML 방식)으로 우선순위를 정한다. 이 방법은 의사결정하는 사람 또는 기술 인력들에게 어떤 취약점이 더 위험하기 때문에 가장 먼저 치료해야 하는지에 대한 좋은 정보가 될 수 있다.


하지만 많은 조직에서 위험이 높은 카테고리에 우선순위를 정할 때 필요한 단계별 수준을 보여주지 못한다. 그래서 공격 영향 및 공격 가능성을 이용해서 위험을 분류할 것을 추천한다. 이 방법은 위험요소를 좀더 정확하게 이해하고, 영향이 크고 공격을 받을 가능성이 큰 취약점에 좀더 많은 노력을 집중할 수 있다.


물론 FIRST에서 개발한 공통취약점점수화시스템(CVSS)과 같이 발견된 취약점에 위험수준을 할당하는 훨씬 더 복잡한 방법들이 있다. CVSS는 취약점을 상세하게 분석할 때는 최고지만, 일반적인 침투시험에 적용하는데 비용이 많이 든다. 필자는 여기서 영향과 가능성을 이용해서 HML과 CVSS 중간정도로 취약점을 분류했다.


취약점 보고서 가운데 요약 보고서에 조직의 상대적 중요성에 따른 보안문제를 그래픽을 통해 요약하면 유용하다. HML 발견사항에 대해서는 대부분의 침투시험 전문가는 단순히 높음/중간/낮음 취약점을 보여주는 막대 형태의 차트를 복사한다. 그러나 이는 그림 3에서 보는 것과 같이 정보를 충분하게 전달하지 못한다.

그림 3. 전통적인 HML 모델을 사용한 막대모양 차트


단순히 막대모양 차트를 넘어서 우리 팀은 그림 4와 같이 다차원 그래프를 사용해서 영향 및 공격 성공가능성에 기초해 발견된 취약점을 그래픽 형태로 요약했다. 여기서 X축에는 공격성공 가능성을 넣고, Y축에서는 영향을 표시했다. 그리고 1~5까지 점수화했다.


각 취약점에 대해서 서로 만나는 값의 숫자의 크기를 원으로 표시했다. 원이 큰 것은 침투시험에서 발견사항이 많다는 것을 의미한다. 이 결과 여러 고객들로부터 이런 차트가 좀 더 의미 있는 결과를 보여준다는 피드백을 받았다. 의사결정권자들도 이러한 그래프를 통해 좀 더 빨리 결과를 이해하고, 치료를 위해 자원을 할당할 수 있다고 밝혔다.

그림 4. 영향과 공격 성공가능성 매트릭스


단순하고 반복적인 침투시험의 악순환 끊어야

여기서 설명한 치료법은 여러분들이 기술적으로 완벽하게 수행할 수 있다는 가정 하에 설명했다. 하지만 계속해서 노력할 필요가 있다. 그리고 좀 더 깔끔한 결과를 얻기 위해서 여기서 제시한 방법을 이용하면 작업결과에 대한 사업적인 가치를 극대화 할 수 있다.


우리는 침투시험 전문가에게 좀 더 가치 있는 것을 제공하기 위해 다양한 방법에 대해서 설명했다. 모든 독자들이 여기에서 제시한 방법을 따라 하기를 기대하지 않는다. 하지만 적어도 1~2개는 시도해 보아서 자신이 한 작업에 대한 사업적인 가치를 높이기를 바란다. 보안산업에서 침투시험을 가치 있게 만드는 것은 단순하고 반복적인 침투시험의 악순환을 끊는 일이다.

필자는---------------------------------------------------------

브라이스 갤브레이스(Bryce Galbraith), SANS 공인강사


브라이스는 전 세계 ISP 및 포춘 500대 기업에서 보안업무를 수행한 바 있다. 특히, 파운스톤의 유명한 침투시험 팀원이었으며, 파운스톤의 첨단 해킹 실전코스 시리즈의 선임강사 및 코스 개발자였다. 브라이스는 윤리적 해킹 및 대응방안에 대해서 전 세계 유명회사, 금융회사 및 정부기관 수천여 명의 IT 전문가를 대상으로 강의했다.

브라이스는 올해 ‘SANS Korea 2012(www.itlkorea.kr/sans/sanskorea2012.php)’에서 SEC 560 네트워크 침투시험 및 윤리적 해킹(www.itlkorea.kr/sans/sec560.php, 11월 5~10일), 그리고 SEC 580 기업 침투시험을 위한 메타스플로잇 쿵푸 과정(www.itlkorea.kr/sans/sec580.php, 11월 12~13일)을 강의할 예정이다.

-------------------------------------------------------------

 

And
prev | 1 | 2 | 3 | 4 | 5 | 6 | next