무선네트워크와윈도우즈레지스트리 - 당신의컴퓨터는어디에다녀왔는가? 원제 : Wireless Networks and the Windows Registry - Just where has your computer been? 원문 https://www.sans.org/reading-room/whitepapers/incident/wireless-networks-windows-registrycomputer-been-33659 SANS Institute InfoSec Reading Room Author: Jonathan Risto, jonathan.risto@hotmail.com Accepted: September, 2010 요약번역 http://elmosec.tistory.com
1. 논문전체요약 윈도우는사용자가시스템에서무엇을했는지에대한모든정보를가지고있다. 컴퓨터에무엇을연결했고, 어떤것을사용했는지등어디서정보를알아내고그것이무슨뜻인지해석할줄만알면된다. 하드웨어 (NIC) 에직접적으로연결된것들과컴퓨터가접속했던네트워크에의해남겨진레지스트리흔적들로윈도우즈 XP 와비스타시스템을분석한다. 윈도우즈레지스트리는운영체제가필요한모든정보를가지고있다. 여기에는운영체제가만든초기구성요소, 설정, 옵션사항들과사용자가소프트웨어를설치하며만든환경설정들을포함한다. 논문에서예로든 1 년된비스타시스템은 846,371 여개의키를가지고있으며, 이와같은방대한양의윈도우즈레지스트리속에서시스템에대한정확한정보를걸러내기는쉽지않다. 게다가윈도우즈는운영체제에따라윈도우즈레지스트리의어딘가에어떤정보를넣는지를달리한다. 무선네트워크환경설정또한윈도우즈레지스트리에서찾아볼수있다. 컴퓨터가연결되었던네트워크들의 Service Set Identifier(SSID), 해당네트워크의네트워크설정파라미터, 네트워크인터페이스카드 (NIC) 과관련된상세정보등을모두윈도우즈레지스트리에서볼수있다. 2. 세부요약 2.1. 윈도우즈레지스트리 윈도우즈레지스트리는시스템에대한구성요소의데이터베이스이다. 이모든데이터는로컬 시스템의여섯개의하이브밑에존재한다. 하이브는키와서브키들의집합이자데이터의 백업을가진파일레지스트리의값이다. 다음은공통으로발견되는다섯개의루트키들이다 : - HKEY_LOCAL_MACHINE or HKLM - HKEY_CURRENT_CONFIG OR HKCC - HKEY_CLASSES_ROOT or HKCR - HKEY_CURRENT_USER or HKCU - HKEY_USERS or HKU
레지스트리편집기 (regedit) 에서볼수있는다섯개의루트키 루트키들은수많은서브키들을포함하는폴더와같은형태이다. 서브키들은또다른서브 키들을포함할수있다. 하지만얼마나많은서브키가특정위치에존재하든, 모든키는다음 표의주요데이터타입중하나이다. 이름 데이터타입 설명 REG_BINARY Binary 원시이진데이터. 대부분의하드웨어구성요소 정보는 이진 데이터로 저장되고 레지스트리 편집기에는 16 진수형식으로표시됨 REG_DWORD DWORD 4 바이트길이의숫자로표시되는데이터. 장치 드라이버와서비스에대한많은매개변수들이이형식이며레지스트리편집기에는 2 진수, 16 진수또는 10 진수형식으로표시됨 REG_EXPAND_SZ Expandable String 가변길이의데이터문자열. 이런데이터형식에는 Value 프로그램이나 서비스가 데이터를 사용할 때 비로소확인되는변수가포함됨 REG_MULTI_SZ Multi String Value 다중문자열. 사용자가읽을수있는형식으로된목록이나여러값을포함하는값은일반적으로이형식. 항목은공백, 쉼표또는다른표시로구분됨 REG_SZ String Value 고정길이의텍스트문자열 레지스트리키의주요데이터타입 2.2. 윈도우즈비스타의무선레지스트리키 윈도우즈비스타는여러위치에무선설정과구성요소를저장해둔다. 그중가장먼저네트워크인터페이스카드 (NIC) 관련데이터를저장하는레지스트리키를통해무선관련정보를알수있다. 위치 : HKLM\Y_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
논문속의윈도우즈비스타무선관련레지스트리 이키안에는인터페이스에할당된 GUID(Globally Unique Identifier) 를찾을수있다. ServiceName key 라는곳에저장되어있으며, 위예시에서의값은 {2B33BB4B-6279-42AF-98BA- EA6E8A70F8B7} 이다. 시스템에여러카드가설치되어있다면, 또는컴퓨터에카드가더추가되었다면, 해당카드가이곳에고유한식별자를가지며보이게된다. 위예시에서는 5 라고명시된또다른카드가시스템에설치되었고, 별도의 GUID 가할당된것을볼수있다. 네트워크인터페이스에어떤 GUID 가할당되었는지안다면, 무선네트워크 IP 주소와그와 관련된정보들을비스타레지스트리에서알아낼수있다. HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID} 무선 NIC 의 TCP/IP 파라미터 논문속의위예시에서는 IP 주소 172.19.5.5 가할당되었고, 게이트웨이주소는 172.19.5.244 이며 도메인 gateway.2wire.net 이할당되었음을알수있다. 뿐만아니라게이트웨이가 DHCP 서버임을알수있고, 따라서이는홈게이트웨이디바이스라고추정할수있다. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\ 에서는 시스템이기록한컴퓨터가연결되었던네트워크정보들을볼수있다. profileguid 로구분되며,
Description key 에네트워크의 SSID 를가지고있다. 컴퓨터가처음네트워크에연결되면 DateCreated 필드에기록되고, 마지막접속은 DateLastConnected 필드에기록된다. 무선정보레지스트리키 이곳에기록된날짜포맷은 TCPIP 섹션의것과다르다. 이들은바이너리구조에있으며, 4 바이트부분으로나눌수있다. 각부분은리틀엔디언포맷이고, 다음과같은값을표현한다 : 년도, 월, 요일, 일, 시, 분, 초, 밀리초 Year - da07 07da = 2010 Month = 0300 0003 = March Weekday 0600 0006 = Saturday Day - 0600 0006 = 06 Hour 1400 0014 = 20 Minutes 3600 0036 = 54 Seconds 0900 0009 = 09 Thousandths e000 00e0 224 따라서예시로나온최초네트워크접속시간키값 (DateCreate) 은 Saturday March 6, 2010 at 20:54:09.224 로해석할수있다. 마지막으로네트워크에접속했던시간도이와동일한방법으로구할수있으며, DCode 라는툴을사용하여이를자동으로변환할수도있다. HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkList\Signatues\Unmanaged \{ProfileGUID} 에서도무선네트워크관련정보를얻을수있는데, 여기에서는시스템이접속한무선 AP 의 MAC 주소, 네트워크에할당된 DNS 서픽스와 SSID, ProfileGUID 를확인할수있고, 이 GUID 를통해관련 IP 주소정보가담긴레지스트리키도찾을수있다. MAC 주소를알게되면컴퓨터가구체적으로어떤 AP 에연결했는지알기가더수월해진다. Skyhook 과같이 MAC 주소와관련 AP 의주요도시를맵핑하는툴을사용하면지리적인 위치까지도알수있다.
2.3 윈도우즈 XP 무선레지스트리키 윈도우즈 XP 시스템의레지스트리분석은윈도우즈비스타보다쉽다. 레지스트리설정이더 좋기때문이아니라, 윈도우즈 XP 의데이터를추출하는툴이많기때문이다. 대표적으로 Registry Ripper 가있다. XP 의무선네트워크연결과관련된레지스트리는다음경로에서찾을수있다 : HKLM SOFTWARE\Microsoft\WZCSVC\Parameters\Interfaces\{GUID} 윈도우즈 XP 시스템의무선네트워크연결레지스트리 이레지스트리키속 ActiveSettings 에는시스템의활성무선정보가들어있다. 다음과같이 네트워크 SSID 를볼수있다. 윈도우즈 XP ActiveSettings 속네트워크 SSID(Not yours - Disconnect) 또다른중요정보의예로 Static#000 값을들수있다. 이값은시스템이해당인터페이스를통해접속한무선네트워크를보여준다. ActiveSettings 에서확인한 SSID 도볼수있다. 대부분의시스템은다양한무선네트워크에접속하므로, 장시간운영한노트북시스템의경우많은값을가지고있다.
Static#xxx 의한줄은별개의무선네트워크를의미하며, 더많은수가있을수록더많은 무선네트워크에접속했음을뜻한다. 3. 추가조사 3.1 루트키설명 루트키 HKEY_CLASSES_ROOT 설명 OLE 데이터, 파일타입, 윈도우에서사용하는확장자, 파일과 프로그램간의연결에대한데이터저장 HKEY_CURRENT_USER 현재의사용자정보를나타내는키 - 제어판설정, 네트워크정보, 컴퓨터환경설정등윈도우즈에설치되어있는각종응용프로그램설정에관한정보 HKEY_LOCAL_MACHINE 하드웨어와하드웨어를구동시키는드라이버등각종하드웨어에 관련된정보기록. 레지스트리에서가장위험하고복잡한구성을가지고있는키 HKEY_USERS HKEY_CURRENT_USER 에저장된정보전체와데스크탑설정, 네트워크연결등의정보저장. 하나의시스템을여러사용자가서로다른계정을통해사용할수있도록설정하는내용기록 HKEY_CURRENT_CONFIG 레지스트리가운데가장단순한부분. HKEY_LOCAL_MACHINE 에서브로존재하는 Config 의내용만을담고있음. 현재설치되어있는하드웨어의목록을볼수있음.
3.2 하이브 레지스트리하이브란데이터의백업이포함된지원파일의집합을가진레지스트리의키, 하위키및값의그룹이다. 레지스트리정보는디스크에존재하는것이아니라 Memory 에존재하며, 하이브에키값들이논리적인구조로저장된다. 활성시스템의커널에서하이브파일을관리하기때문에일반적인방법으로는접근불가하다. 레지스트리는 4096 바이트사이즈인블록에나누어저장된다. 첫번째블록은베이스 블록이라고하고첫 4 바이트에 regf(0x66676572) 라는서명이담겨있다. 베이스블록은그 하이브의루트키와상응하는것을담고있다. 활성시스템의레지스트리를구성하는하이브파일 목록은하이브셋이라하며, 그예로 SAM, SECURITY, SYSTEM, SOFTWARE, Default 을들수있다.