| 윈도우의 UAC 조작하면 코드 실행 권한을 상승시킬 수 있다 | 2018.11.13 |
UAC, 정식 보안 기능 아니지만 추가적인 보안 층위의 역할 담당
보안 디렉토리 확인 원리 살짝 건드리면 파일의 권한 상승시킬 수 있어 [보안뉴스 문가용 기자] 보안 업체 테너블(Tenable)의 전문가들이 최근 보안 디렉토리(trusted directory) 내에 있는 파일의 실행 경로를 스푸핑 함으로써 윈도우의 사용자 계정 제어(UAC)를 우회할 수 있는 방법을 발견해냈다. ![]() [이미지 = iclickart] UAC는 MS가 공식적으로 ‘보안 기능’이라고 인정한 부분은 아니다. 하지만 추가적인 보호 장치로서의 기능을 발휘하고 있는 건 사실이다. 프로그램이 상승된 권한으로 실행되고자 할 때 관리자 그룹에 속한 사용자들에게 해당 사실을 알려, 확인을 먼저 얻어내기 때문이다. 하지만 UAC가 이러한 모든 상황에서 관리자들에게 경고 메시지를 보내는 건 아니다. 프로그램들 중에는 자동으로 권한을 상승시키는 것이 있으며, 따라서 UAC를 발동시키지 않게 된다. 물론 윈도우에는 이렇게 자동으로 권한을 상승시킬 수 있는 실행파일을 사용자가 지정하거나 확인할 수 있게 해주는 다양한 보안 장치들이 따로 존재한다. 테너블의 데이비드 웰즈(David Wells)는 “그럼에도 UAC를 우회할 수 있는 일부 특정 상황을 남용하여 악성 실행파일을 보다 편리하고 안전하게(공격자 입장에서) 실행시키는 게 가능하다”고 설명한다. “실행파일이 자동으로 권한을 상승시키려면 실행되기 이전에 설정이 되어야 합니다. 파일 내에 autoElevate라는 키가 존재하도록 해야 한다는 것이죠. 또한 서명도 제대로 되어 있어야 하고, C:\Windows\System32와 같은 보안 디렉토리로부터 실행이 되어야 합니다.” 웰즈에 의하면 실행파일의 자동 권한 상승을 위해 시스템 내에서 실시하는 여러 가지 확인 작업 중, “Appinfo.dll(AIS)가 RtlPrefixUnicodeSring API를 호출한 후 실행파일 경로가 C:\Windows\System32\로 시작하는지 살피는 부분이 존재한다”고 한다. 웰즈는 CreateDirectory API를 사용해 C:\Windows \라는 디렉토리를 만들었다. 정상 Windows 디렉토리와 달리 빈 공간이 하나 포함되어 있는 것이다. 그리고 \\?\라는 문자열을 디렉토리 앞에 붙여 윈도우의 이름 붙이기 규칙을 우회했다. 그런 후에 그 디렉토리 안에 System32 디렉토리를 만들었다. 다음으로 그는 서명이 된, 자동으로 권한을 상승시킬 수 있는 실행파일을 진짜 C:\Windows\System32 디렉토리로부터 복사해왔다. 이 복제된 파일을 윈도우 시스템이 어떤 식으로 처리하는지 분석했는데, UAC 경고가 발동되지 않음을 알 수 있었다. “C:\Windows(띄고)\Systems32\winSAT.exe를 실행했더니, Appinfo.dll이 GetLongPathNameW API로 전달되고, 그것이 다시 C:\Windows\System32\winSAT.exe로 전환이 되더군요. 즉 Windows 다음에 나오는 빈 공간을 자동으로 삭제하여 실행을 시키더라는 것입니다. 보안 디렉토리 확인은 그러한 전환 작업 이후에 실시되었습니다.” 그렇게 보안 디렉토리 확인이 끝난 후, 나머지는 일사천리로 진행됐다. 권한을 자동으로 상승시키는 데 필요한 모든 확인 사항들이 전부 통과됐고 그 결과 appinfo.dll이 winSAT.exe 복사본의 권한을 자동으로 상승시켰다. 파일 자체만으로는 이미 서명이 제대로 된 것이니, 폴더 검사만 피할 수 있다면 당연히 나와야 할 결과였다. 웰즈는 한 발 더 나아가 공격자들이 사용할 만한 코드를 실험해보기도 했다. “winSAT.exe로부터 임포트 한 가짜 WINMM.dll을 가짜 C:\Windows\System32 디렉토리에 드롭시켰습니다. 로컬 dll 하이재킹 공격을 실시한 것이고, 성공했습니다. 공격자의 코드 권한을 높이는 것도 비슷한 방식으로 이뤄낼 수 있었습니다.” 웰즈는 깃허브에 개념증명 코드를 업로드하기도 했다. 주소는 이것(https://github.com/tenable/poc/tree/master/UACBypass)이다. 3줄 요약 1. 권한을 상승시키는 실행파일 나타났을 때, 윈도우는 UAC라는 기능을 통해 사용자에게 경고함. 2. UAC의 ‘확인 메커니즘’ 중에 폴더 확인이 있는데, 이 폴더를 살짝 조작하면 가짜 파일이 무사히 확인 과정을 통과하게 할 수 있음. 3. 공격자의 로컬 권한 상승 공격도 가능함. [국제부 문가용 기자(globoan@boannews.com)] <저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지> |
|
|
|