보안

윈도우 네트워크에서 레거시 애플리케이션을 보호하는 5가지 방법

Susan Bradley | CSO 2020.07.06
일반적인 기업 네트워크에 최소 하나 이상이 있고, 관리자가 인정하는 것 이상으로 많은 것이 있다. 다름 아닌 끊어낼 수 없는 오래된 비즈니스 소프트웨어가 실행되는 구형 서버나 워크스테이션이다. 운이 좋다면 금방 옮길 수 있는 가상 머신에 기반이겠지만, 운이 없다면 오래된 하드웨어에서 운영 중이고 하드웨어가 장애가 일으키지 않기를 기도하는 상황일 것이다.
 
© Getty Images Bank

마이크로소프트의 애론 마고시스는 블로그를 통해 이런 레거시 애플리케이션을 ‘퇴역’시키고 지원을 받을 수 있는 안전한 새 애플리케이션으로 업그레이드하는 것이 좋다고 지적했다. 그러나 많은 기업이 여전히 레거시 시스템을 이용하고 있는 것이 현실이다. 마이크로소프트의 제시카 페인은 최근 마이크로소프트 가상 보안 서밋(Virtual security summit)에서 윈도우 네트워크에서 이런 레거시 시스템을 보호하는 방법을 설명했다. 페인과 마고시스가 조언한 내용 중 일부를 소개한다.
 

로그인 크리덴셜을 확인하라

도메인 관리자 크리덴셜(자격증명)로 시스템에 로그인할 수 있는지 확인한다. 레거시 시스템은 시스템 크리덴셜의 해시값을 유지하기 때문에, 미미카츠(Mimikatz) 같이 쉽게 구할 수 있는 하베스팅 도구들로 쉽게 하베스팅 할 수 있는 경우가 많다. 권한이 높은 크리덴셜로 이런 시스템에 로그인하지 않는다.
 

네트워크 연결성을 확인하라

레거시 시스템이 윈도우 네트워크에 연결된 방식, 레거시 애플리케이션에 필요한 포트와 프로토콜에 관해 확인한다. 와이어샤크(Wireshark)와 프로세스 모니터(Process Monitor) 같은 도구를 이용해 레거시 시스템이 이용하는 TCP 포트와 프로토콜을 파악할 수 있다. 이후 윈도우 방화벽을 사용해 레거시 시스템이 이 포트에서만 작동하도록 제한해야 한다. 네트워크 경계선에서 레거시 시스템을 차단해 공격자가 네트워크 침입 경로로 이용하지 못 하도록 하는 것이다.
 

애플리케이션 레지스트리 키와 폴더를 파악하라

관리자 권한을 요구하는 경우를 중심으로 애플리케이션을 더 튼튼히 보호하려면, LUA 버그라이트를 이용해 애플리케이션이 관리자 권한 없이 실행하기 위해 열어야 하는 폴더와 레지스트리 키를 파악해야 한다. 이처럼 LUA 버그라이트는 최신 시스템에서 오래된 레거시 애플리케이션이 작동하도록 운영 체제를 조정할 부분을 파악하는 데 도움이 된다.
 

적절한 권한을 부여하라

애론 마고시스는 애플리케이션이 관리자 권한 없이 실행되는 경우를 다음과 같이 설명했다.
 

“변환이나 포스트-인스톨 스크립트를 통해 인스톨러를 수정한다(앱이 처음 실행될 때 관리자 권한으로 실행되어야 하는 ‘런-원스(run-once)’의 경우). 또 다른 방법은 정션(Junctions)이나 디렉터리(Directory) 심벌릭 링크(Symbolic links)를 추가하는 것이다. UAC 파일/레지스트리 가상화를 활용할 수도 있다(파일/레지스트리 가상화가 작동하지만, UAC와의 호환성을 선언해 가상화를 끈 임베디드 메니페스트가 추가된 새 버전의 비주얼 스튜디오로 리빌드 된 오래된 앱의 경우). 보호된 디렉터리의 .ini 파일에 쓰려면 IniFileMapping 리디렉션을 사용하고, HKCR에 쓰려면 HKCU\Software\Classes 아래 상응하는 키를 미리 만든다”


LUA 버그라이트를 이용하는 마지막 방법은 파일, 디렉터리, 레지스트리 키, 기타 개체의 권한을 정밀하게 변경하는 것이다. 이 방법은 다른 방법과 다르게, 승인 없이 권한이 상승할 수 있는 위험이 초래되므로 주의해야 한다.
 

공격자처럼 네트워크를 확인하라

네트워크가 공격자에게 어떻게 보일지 확인할 필요가 있다. 특히, 네트워크 인프라에 레거시 서버가 포함돼 있다면 더 그렇다. 블러드하운드(BloodHound) 도구를 이용해 공격자가 공격에 악용할 수 있는 액티브 디렉터리를 찾을 수 있다. 블러드하운드는 리눅스, 맥OS, 윈도우 등 여러 플랫폼을 지원한다.

블러드하운드를 사용하려면 Neo4J 데이터베이스를 설치해야 한다. 가장 쉽게 블러드하운드를 시작하는 방법은 데스크톱 버전 Neo4J를 이용하는 것이다. NeoJ를 설치한 후, 프로그램을 실행해 데이터베이스 비밀번호를 설정한다. 이 데이터베이스는 매우 중요한 네트워크 정보를 포함하고 있으므로 강력한 비밀번호를 만들어야 한다.

다음 할 일은 블러드하운드 소프트웨어를 다운로드해 설치하는 것이다. 소프트웨어를 추출할 때 짧은 파일 이름으로 루트 폴더를 설정한다. 기본 설정을 사용하면 ‘긴 파일 경로 이름’ 문제에 직면할 수 있다. 나중을 위해 Neo4j 비밀번호를 기억해야 한다.

설정의 마지막 단계가 가장 까다롭다. 네트워크를 분석하는 샤프하운드3 도구를 다운로드한다. 윈도우 10은 ‘고급 위협 방지’가 활성화돼 있어, 설치와 네트워크 실행이 불가능해 윈도우 7 장치에 다운로드해야 했다. 바이러스 백신 프로그램도 설치와 실행을 차단할 수 있다. 파일을 관리자로 실행하거나, 차단을 해제할 필요가 있을 수 있다. 웹 속성 표시를 갖고 있고, 이런 설정을 하기 전에는 데이터를 수집하지 않기 때문이다.

샤프하운드를 실행하면 네트워크 분석 정보가 포함된 압축 파일이 만들어지고, 블러드하운드를 실행하면 빈 데이터베이스가 생성됐다는 프롬프트가 나타난다. 오른쪽에 업로드 버튼이 있다. 샤프하운드 압축(Zip) 파일을 업로드한다. 쿼리 섹션에서 공격자가 공격에 사용할 수 있는 쿼리를 확인할 수 있다. 예를 들면 “Find shortest paths to domain admins”, “Find principals with DCSync rights”, “Map Domain Trusts”, “Shortest Paths from Kerberoastable Users” 등이다.
 
ⓒ  Supplied Art

네트워크를 더 자세히 분석하기 위해, 침입 테스트 기능에 탑재된 파이어아이(FireEye)의 코만도(Commando) 가상 머신 같은 추가 리소스를 사용할 수 있다. 깃허브 다운로드는 기본적으로 가상 머신을 이용해 윈도우와 액티브 디렉터리를 지원하므로, 더 안전하게 네트워크를 분석할 수 있다. 윈도우 10 2004부터 윈도우에서 리눅스 하위 시스템이 강화돼, 이제 윈도우에서 리눅스를 실행할 수 있게 됐다. 또한, 침입 테스트 플랫폼에 도커(Docker, 운영체제 가상화로 소프트웨어 컨테이너를 지원하는 PaaS 제품)를 이용할 수도 있다.

우리의 네트워크가 공격자에게 어떻게 보이는지 확인하기 위해 충분한 시간을 투자할 필요가 있다. 취약한 부분이 무엇인지, 공격자가 레거시 시스템에서 쉽게 하베스팅 할 수 있는지 등을 확인한다. 그러면 레거시 시스템에서 다중 인증이 아닌 RDP를 닫아, 공격자가 크리덴셜을 하베스팅 할 수 없도록 만들어야 한다는 점 등을 깨닫게 된다. editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.