다음을 통해 공유


[회보 보관 ^] [< 볼륨 2, 번호 4] [볼륨 3, 번호 1 >]

Systems Internals 뉴스레터 2권, 5호

www.sysinternals.com
Copyright (c) 2000 Mark Russinovich


2000년 11월 30일 - 이 문제:

  1. 사설

  2. SYSINTERNALS의 새 소식

    • PsLoggedOn v1.2
    • PsShutdown v1.0
    • PsTools v1.1
    • BgInfo v1.1
    • Tokenmon v1.0
    • Filemon v4.32
    • Regmon v4.32
    • Inside Windows 2000, 3판.
    • 2000년 11월 및 겨울 Windows 매거진
    • Microsoft의 Sysinternals
    • Sysinternals 라이선스
  3. 내부 정보

    • NFI
    • 숨겨진 Win9x 레지스트리 키
  4. 향후 예정 사항

    • 새 휘슬러 시스템 호출

스폰서: WINTERNALS 소프트웨어

Sysinternals 뉴스레터는 웹(www.winternals.com)에서 Winternals Software의 후원을 받습니다. Winternals Software는 Windows NT/2K용 고급 시스템 도구의 선도적인 개발업체이자 제공업체입니다. Winternals 소프트웨어 제품에는 Windows NT 4.0용 FAT32, NTFSDOS Professional Edition(DOS용 읽기/쓰기 NTFS 드라이버) 및 원격 복구가 포함됩니다.

Windows 9x 및 Windows NT/2000의 모든 버전과 함께 제공되는 netstat 명령은 시스템에서 열려 있는 TCP/IP 포트를 보여주지만 포트가 열려 있는 프로세스는 보여주지 않습니다. Winterals의 최신 모니터링 도구인 TCPView Pro는 각 포트가 열린 상태에서 어떤 프로세스가 실행되는지 보여주는 netstat와 동등한 명령줄 도구인 Tcpvstat와 함께 제공될 뿐만 아니라 동일한 정보와 TCP/IP 활동의 실시간 추적을 보여주는 GUI를 포함합니다. 실시간 추적은 네트워크 액세스를 만드는 애플리케이션, 선택적인 DNS 이름 확인을 통한 액세스의 로컬 및 원격 IP 주소, 액세스 유형, 액세스 성공 및 전송된 데이터 양을 나타냅니다. TCPView Pro는 $69에 불과합니다. 지금 www.winternals.com/products/monitoringtools/tcpviewpro.shtml에서 완전한 기능을 갖춘 TCPView Pro의 14일 평가판을 다운로드하세요.

여러분, 안녕하세요.

Sysinternals 뉴스레터에 오신 것을 환영합니다. 뉴스레터는 현재 28,000명의 구독자를 보유하고 있습니다.

Windows NT에서 Windows 2000으로 이동하는 이점 중 하나는 크게 향상된 안정성입니다. 저는 여러 문서에서 개선 이유에 대해 썼으며 이와 관련하여 주로 Driver Verifier라는 도구가 큰 역할을 했습니다. 시작 메뉴의 실행 대화 상자에 "verifier"를 입력하여 실행하는 Verifier를 구성하여 특정 장치 드라이버의 실행을 면밀히 관찰하고 여러 드라이버 프로그래밍 규칙을 위반하는지 찾을 수 있습니다. 그러나 Verifier는 수동적으로 모니터링하는 것보다 한 단계 더 나아가 잠재력을 악화시킵니다. 예를 들어 유효하지 않은 영역에 걸쳐 있는 드라이버에 메모리 블록을 할당하고 드라이버에 전달되는 데이터 구조의 특정 필드를 0으로 지정하여 오류 상태를 만듭니다. 정말 힘든 일을 하고 싶다면 Verifier가 드라이버의 메모리 부족 상태를 시뮬레이트하도록 할 수 있습니다.

Microsoft는 엄격한 Driver Verifier 테스트를 통과하기 위해 Microsoft에서 디지털 서명한 모든 드라이버를 요구하는 드라이버 서명 프로그램을 통해 Verifier를 활용합니다. 드라이버가 설치되면 하드웨어 마법사는 드라이버가 서명되었는지 확인합니다. 그렇지 않은 경우 제어판에 있는 시스템 애플릿의 하드웨어 페이지에서 액세스할 수 있는 드라이버 서명 옵션 대화 상자에 입력한 설정에 따라 경고를 표시하거나 드라이버 설치에 실패합니다.

기본 드라이버 서명 정책이 최종 사용자에게 서명되지 않은 드라이버에 대해 경고한다는 사실만으로도 대부분의 하드웨어 공급업체는 드라이버를 강력하게 만들고 서명을 받는 데 어려움을 겪게 됩니다. 그러나 장치 드라이버는 드라이버 서명 정책에 의해 감지되지 않고 시스템에 잠입할 수 있습니다. INF 파일(.inf 확장자로 끝나는 드라이버 설치 파일)을 사용하여 설치된 드라이버만 서명을 확인합니다. 설치 애플리케이션은 설치 API를 직접 사용하거나 드라이버의 레지스트리 설정을 수동으로 구성하여 수동으로 드라이버를 설치할 수 있습니다. Sysinternals 애플리케이션이 이에 대한 좋은 예입니다. 드라이버 구성 요소가 있는 Filemon, Regmon 및 기타 Sysinternals 도구는 드라이버를 수동으로 설치하므로 Microsoft에서 서명하지 않았다는 경고를 받지 않습니다.

일반적으로 INF 파일과 함께 설치되지 않는 드라이버에는 바이러스 스캐너, 암호화 소프트웨어 및 CD-ROM 굽기 소프트웨어가 포함됩니다. 그러나 이것이 하드웨어 관련 드라이버의 누락을 막지는 못합니다. Windows 2000용 Sysinternals Ctrl2cap 드라이버(www.sysinternals.com/ctrl2cap.htm는 드라이버 서명 검사를 우회하는 방식으로 설치되는 하드웨어 관련 드라이버의 예입니다. 이 허점은 확인되지 않은 시스템 드라이버의 존재로 이어져 시스템 안정성을 손상시킬 수 있습니다(저는 가장 높은 설정에서 모든 Sysinternals 드라이버를 확인합니다). Microsoft는 INF 파일로 설치되는 드라이버뿐만 아니라 모든 드라이버가 서명 확인을 거치도록 강제해야 합니다.

제가 왜 이렇게 흥분하고 있죠? 시중에서 가장 많이 사용되는 CD-ROM 굽기 소프트웨어에는 Windows 2000 SP1 시스템을 재현 가능한 방식으로 작동 중단시키는 드라이버가 있습니다. Driver Verifier가 이를 확인하도록 구성하면 Verifier가 드라이버의 첫 번째 위반을 감지하고 시스템을 충돌시키기 전에 시스템 부팅이 완료되지 않습니다. 드라이버가 INF 파일 없이 설치되었으므로 서명되지 않았다는 경고를 받지 못했습니다. Microsoft의 정책이 더 엄격하다면 이 공급업체는 서명되지 않은(그리고 버그가 있는) 드라이버를 배송하기 전에 두 번 생각할 것이라고 장담합니다.

뉴스레터의 내용에 관심이 있을 것으로 생각되는 친구들에게 전달해 주세요.

감사합니다!

-Mark

SYSINTERNALS의 새 소식

PSLOGGEDON V1.2

LoggedOn에서 PsLoggedOn으로의 명백한 이름 변경 외에도 로컬 또는 원격 시스템의 리소스 공유를 통해 로컬로 로그인한 사람을 표시하는 기능이 있는 이 명령줄 도구에는 몇 가지 새로운 기능이 있습니다. 첫 번째는 사용자 피드백에서 나온 '-l' 명령줄 스위치입니다. 많은 사람들이 PsLoggedOn을 사용하여 계정이 서버에 로컬로 로그온되었는지 확인합니다. 예를 들어 파일 공유를 통해 로그온한 사용자가 있을 수 있지만 계정을 업데이트할 수 있거나 서버를 원격으로 관리할 수 있는 시기에 대한 결정을 내릴 때 관련이 없습니다.

PsLoggedOn의 두 번째 새 기능은 로그온한 사람뿐만 아니라 로그온이 발생한 시간도 보여줍니다. PsLoggedOn은 Win32 API인 NetSessionEnum을 사용하여 리소스 공유 로그온을 열거할 때 무료로 리소스 공유에서 로그온에 대한 로그온 시간을 가져옵니다(명령줄 Net 명령도 NetSessionEnum을 사용하여 세션을 열거함). 그러나 누가 시스템에 로컬로 로그온했는지 알려주는 Win32 API는 없으며 로그온한 시간은 훨씬 적습니다.

누가 시스템에 로컬로 로그온했는지 확인하기 위해 PsLoggedOn은 컴퓨터의 HKEY_USERS 레지스트리 키 아래에 있는 보안 ID(SID)를 열거합니다. 누군가 콘솔이나 서비스를 통해 컴퓨터에 로컬로 로그온하면 그의 프로필이 HKEY_USERS 키에 로드됩니다. 애플리케이션은 HKEY_CURRENT_USER 키를 통해 해당 프로필의 레지스트리 설정에 액세스할 수 있습니다. 시스템은 이 키를 HKEY_USERS 아래의 특정 프로필에 대한 심볼릭 링크로 취급하기 때문입니다. 따라서 PsLoggedOn은 컴퓨터의 HKEY_USERS 키에서 찾은 SID를 해당 사용자 이름으로 변환하여 누가 로컬로 로그온했는지 알 수 있습니다. PsLoggedOn은 원격 시스템에 로그온한 사용자를 나열하도록 지시할 때 RegConnectKey을 사용하여 원격 컴퓨터의 레지스트리에 연결합니다.

유사한 트릭을 사용하여 사용자가 로그온한 시간을 파악합니다. 로그인 후 WinLogon 프로세스가 사용자의 프로필을 HKEY_USERS에 로드할 때 WinLogon은 프로필에 휘발성(디스크의 프로필에 저장되지 않음) 하위 키를 적절하게 이름이 휘발성 환경으로 만듭니다. 레지스트리는 레지스트리 키에 대해 마지막으로 수정된 타임스탬프를 저장하며, 시스템은 Volatile Environment 하위 키가 생성된 후 수정하지 않기 때문에 PsLoggedOn은 Volatile Environment 하위 키의 타임스탬프를 얻어 사용자가 로그온한 시점을 결정할 수 있습니다.

다음 위치에서 전체 원본과 함께 PsLoggedOn v1.2를 다운로드하세요.
www.sysinternals.com/psloggedon.htm.

PSSHUTDOWN V1.0

로컬 또는 원격 Windows NT/2000 시스템을 종료하거나 재부팅해야 하는 경우 PsShutdown을 다운로드해야 합니다. PsShutdown은 Shutdown Windows NT/2000 Resource Kit 도구의 복제품입니다. 종료 전 지연, 재부팅 여부, 시스템에 현재 로그온한 모든 사용자에게 표시할 선택적 메시지, 종료 또는 재부팅할 컴퓨터 이름을 지정할 수 있는 동일한 명령줄 인수를 사용합니다. .

www.sysinternals.com/psshutdn.htm에서 PsShutdown v1.0을 다운로드하세요.

PSTOOLS V1.1

접두사 "Ps"로 시작하는 Sysinternals 도구의 수가 증가하고 있음을 눈치채셨을 것입니다. 첫 번째는 로컬 또는 원격 Windows NT/2000 시스템의 활성 프로세스에 대한 정보를 나열하는 명령줄 도구인 PsList입니다. 표준 UNIX 명령줄 프로세스 정보 도구의 이름이 "ps"이기 때문에 PsList라는 이름을 지정했습니다. 접두사를 가져오는 다음 도구는 로컬 또는 원격 Windows NT/2000 시스템에서 실행 중인 프로세스를 종료할 수 있는 명령줄 유틸리티인 PsKill이었습니다. 저는 PsKill에 "Ps" 접두사를 붙였는데, 이 접두사가 PsList와 완벽한 동반자가 되었기 때문입니다.

시간이 지남에 따라 저는 PsList 및 PsKill과 동일한 정의 특성을 공유하는 다른 도구를 개발했습니다. 이 도구들은 명령줄 기반이며 로컬 또는 원격 Windows NT/2000 시스템에서 작동합니다. 예를 들어 ElogList를 사용하면 시스템 이벤트 로그의 내용을 덤프할 수 있으며 GetSid는 컴퓨터 또는 특정 계정의 SID를 보여줍니다. 최근에 저는 모든 도구에 "Ps" 접두어를 부여하고 PsTools라는 단일 패키지로 다운로드할 수 있도록 하여 이러한 모든 도구를 함께 묶기로 결정했습니다.

PsList, PsKill은 물론 이름이 바뀐 PsLogList 및 PsGetSid가 포함된 PsTools는 총 7개의 도구로 구성됩니다. "Ps" 접두사가 있는 Sysinternals 도구가 보이면 로컬 및 원격으로 작동하는 명령줄 도구임을 자동으로 알 수 있습니다.

www.sysinternals.com/pstools.htm에서 PsTools v1.1을 다운로드하세요.

BGINFO V1.1

엄청난 사용자 피드백의 결과로 Bryce는 받은 사용자 피드백의 결과로 바탕 화면 배경 무늬를 설정하여 시스템 구성에 대한 사용자 정의 가능한 정보를 표시하는 유틸리티인 BgInfo를 업데이트했습니다. 기본적으로 BgInfo는 대화 상자에 지정된 설정을 적용하기 전에 10초 동안 카운트다운하지만 새 명령줄 옵션 /timer을 사용하면 카운트다운을 모두 변경하거나 제거할 수 있습니다. 이렇게 하면 로그온 스크립트에 BgInfo를 포함하거나 프로필의 시작 폴더에 바로 가기로 포함하는 것이 더 편리해집니다.

버전 1.1에는 사용자가 정의한 임의의 텍스트를 표시하는 기능 및 더 많은 사전 정의된 정보 범주와 같은 다른 새로운 기능이 포함되어 있습니다. BgInfo v1.1이 생성하는 데스크톱 비트맵도 일반적으로 더 작아 BgInfo의 데스크톱 메모리 공간을 최소화합니다.

www.sysinternals.com/bginfo.htm에서 BgInfo v1.1을 다운로드하세요.

TOKENMON V1.0

Tokenmon은 Sysinternals에서 다운로드할 수 있는 다양한 모니터링 도구 모음에 가장 최근에 추가된 것입니다. Regmon 및 Filemon과 같은 사촌과 동일한 UI를 공유하는 Tokenmon은 Windows NT/2000 시스템에서 중요한 보안 관련 활동을 모니터링합니다. "중요한" 보안 관련 활동이란 무엇인가요? Windows NT/2000 보안의 중심에는 계정 SID, 그룹 SID 및 권한을 포함하는 데이터 구조인 토큰 개체가 있습니다. 프로세스가 보안 개체에 액세스를 시도할 때마다 보안 참조 모니터는 액세스 유효성 검사의 일부로 토큰의 SID를 사용합니다. 프로세스가 시스템 재부팅과 같은 제한된 작업을 수행하려고 시도하는 경우 시스템은 프로세스의 토큰에서 적절한 권한을 확인합니다.

Windows NT/2000 보안 모델의 강력한(그리고 특허받은) 기능 중 하나는 가장입니다. 가장을 사용하면 스레드가 일시적으로 프로세스 기반 ID를 재정의하고 가장 토큰을 사용하여 대체 ID를 채택할 수 있습니다. 서버 애플리케이션은 클라이언트를 대신하여 리소스에 액세스할 때 액세스 기간 동안 클라이언트의 ID를 채택할 때 가장을 이용합니다.

Tokenmon은 토큰 생성 및 삭제, 권한 활성화 및 비활성화, 가장을 모니터링하기 위해 Regmon이 레지스트리 API에 대해 수행하는 것과 동일한 방식으로 시스템 호출 후크를 설치합니다. Tokenmon은 NT/2000 커널에서 제공하는 프로세스 생성 후크를 사용하여 프로세스 생성 및 삭제를 모니터링하고 기타 API를 사용하여 사용자가 로그온하고 로그오프할 때를 결정합니다.

Tokenmon의 전체 소스 코드가 게시되었으며 코드가 보여주는 몇 가지 흥미로운 기술에 대해 논의할 가치가 있습니다. Tokenmon은 새 로그온 세션의 첫 번째 프로세스에 대한 초기 토큰을 생성하기 위해 WinLogon과 같은 로그온 브로커가 사용하는 NtCreateToken 시스템 호출을 후킹하여 로그온 이벤트를 감지합니다. 첫 번째 프로세스에 의해 생성된 프로세스는 첫 번째 토큰의 복사본을 상속합니다. 로그오프를 검색하기 위해 Tokenmon은 커널 모드 SeRegisterLogonSessionTerminatedRoutine 함수를 통해 로그오프 알림을 등록합니다. 이 함수는 로그온 세션 데이터를 캐시하고 사용자가 로그오프할 때 정리를 원하는 네트워크 리디렉터라고 하는 파일 시스템 드라이버를 위해 존재하는 API입니다. 네트워크 리디렉터는 파일 공유 클라이언트/서버 연결의 클라이언트 측을 구현합니다.

또 다른 흥미로운 Tokenmon 구현 세부 사항은 Tokenmon이 모니터링하는 API를 연결하는 방식입니다. Tokenmon이 후크하는 일부 API는 장치 드라이버에서 사용하기 위해 내보내지지 않지만 Win32 등가물을 사용하는 애플리케이션에서 사용하기 위해 사용자 모드 NTDLL.DLL 라이브러리에서 내보내집니다. Regmon이 후크하는 모든 레지스트리 API는 커널 모드에서 내보내지므로 Regmon 장치 드라이버가 시스템 호출 번호를 얻고 시스템 호출 테이블을 적절하게 후크할 수 있습니다. 드라이버에서 사용하기 위해 내보내지 않은 API의 경우 Tokenmon GUI는 NTDLL.DLL의 내보내기를 사용하여 호출 번호를 얻은 다음 드라이버가 시스템 호출 테이블을 연결할 수 있도록 드라이버에 번호를 전달해야 합니다. 따라서 Tokenmon은 커널 모드로 내보내지 않은 시스템 호출을 후크하는 방법을 보여 줍니다.

www.sysinternals.com/tokenmon.htm 전체 원본을 사용하여 Tokenmon v1.0을 다운로드합니다.

FILEMON V4.32

이 최신 Filemon 업데이트는 보다 직관적이고 완전한 필터링, Windows 9x/Me 네트워크 파일 액세스에 대한 전체 UNC 경로 이름 표시 및 NTFS 메타데이터 파일 이름 표시를 소개합니다.

이전 버전의 Filemon에서는 필수 와일드카드가 있는 필터를 입력해야 했습니다. 예를 들어 드라이브 C:의 Temp 디렉터리에 대한 액세스를 모니터링하려면 "c:\temp\*"와 같은 필터를 입력해야 합니다. 새 필터링 구문에서 와일드카드는 선택 사항이므로 예제 필터가 작동하는 동안 "c:\temp"은 동일한 효과를 얻습니다. 또한 Filemon은 이제 프로세스 이름, 요청 유형, 경로 및 "기타" 열을 포함하여 디스플레이의 모든 필드에 대해 입력한 필터를 적용합니다. 이러한 유연성을 통해 이전에는 불가능했던 특정 유형의 요청 또는 다른 열의 특정 데이터가 있는 요청을 감시할 수 있습니다.

Windows 9x/Me 시스템의 Filemon 사용자는 이제 원격 리소스에 액세스할 때 전체 UNC 구문과 함께 Filemon 표시 경로 이름을 볼 수 있습니다. Filemon은 이전에 이러한 액세스에 대한 서버 또는 공유 이름을 표시하지 않았기 때문에 경로 이름이 불완전했습니다.

마지막으로 Windows NT/2000에서 Filemon을 사용했다면 의심할 여지없이 많은 액세스에 대한 경로 열에 "DASD"라는 텍스트를 보았을 것입니다. 파일 시스템 구조를 우회하는 볼륨에 대한 액세스). NTFS 볼륨에 대한 대부분의 활동에서 DASD는 이제 과거의 일입니다. 대신 읽고 쓰는 NTFS 메타데이터 파일의 이름이 표시됩니다. 예를 들어 이전에는 MFT 레코드를 업데이트하면 DASD 출력 라인이 발생했지만 이제는 MFT의 내부 메타데이터 파일 이름인 "$Mft"에 대한 액세스로 표시됩니다.

이전에 Filemon이 메타데이터 파일 이름을 표시하지 않은 이유는 무엇이며 지금은 이러한 이름을 어떻게 얻습니까? NTFS 메타데이터 파일을 나타내는 파일 개체는 파일 이름을 저장하지 않으므로 Filemon은 파일 개체에서 이름을 추출할 수 없습니다. 파일 시스템 드라이버를 쿼리하여 파일 이름을 가져오는 Filemon의 대체 방법은 NTFS 메타데이터 파일에 대해서도 작동하지 않습니다. NTFS는 메타데이터 파일의 이름으로 응답하지만 NT 4의 NTFS는 무작위로 충돌을 일으키고 Win2k의 NTFS는 이러한 쿼리에 응답할 때 가끔 중단됩니다.

따라서 Filemon은 메타데이터 파일 이름을 얻기 위해 트릭을 사용해야 합니다. 이름이 없는 NTFS 볼륨의 파일 개체에 대한 요청을 발견하면 NTFS에 파일 인덱스에 대한 쿼리를 보냅니다. 이것은 Win32 함수 GetFileInformationByHandle이 반환하는 것과 동일한 인덱스이며 NTFS 볼륨에 있는 파일의 경우 인덱스는 파일의 MFT 인덱스입니다. MFT의 처음 16개 항목은 특정 메타데이터 파일용으로 예약되어 있으므로 해당 범위의 인덱스가 주어지면 Filemon은 자체 테이블에서 메타데이터 파일 이름을 조회합니다.

불행히도 FAT는 디렉터리 메타데이터 파일 또는 FAT의 이름을 저장하지 않기 때문에 FAT 볼륨에 대한 디렉터리 메타데이터 및 파일 할당 테이블(FAT) 액세스에 대해 DASD를 계속 볼 수 있습니다. NTFS 로그 파일($LogFile)이 얼마나 자주 액세스되는지 알면 놀랄 것입니다. 덧붙여서 Whistler의 NTFS는 메타데이터 파일의 이름을 저장하므로 Whistler에서는 트릭이 필요하지 않습니다.

최종 Filemon 향상 기능을 통해 Filemon은 밀리초 해상도로 시간 타임스탬프를 표시할 수 있습니다. 이 지원에는 Windows 9x/Me 커널의 타이밍 기능에 있는 버그 때문에 Windows 9x/Me Filemon 드라이버에 못생긴 해킹이 필요했습니다. 자세한 내용은 소스 코드를 참조하세요.

www.sysinternals.com/filemon.htm에서 소스 코드와 함께 Filemon v4.32를 다운로드하세요.

REGMON V4.32

Regmon의 변경 내용은 Filemon만큼 중요하지는 않지만 이제 Regmon은 Filemon과 동일한 더 직관적인 필터링 구문을 지원하고 Filemon과 마찬가지로 필터를 모든 필드에 적용합니다. 타임스탬프에 밀리초 해상도를 표시할 수도 있습니다.

Whistler(Windows 2000의 후속 버전) 베타 1에서 재생을 시작한 사용자는 이전 버전의 Regmon이 시작될 때 Whistler가 충돌한다는 사실을 알아차렸을 것입니다. 이는 Microsoft가 Regmon이 후크를 삽입하도록 수정하는 시스템 호출 테이블을 쓰기 보호 메모리에 배치했기 때문입니다. Regmon v4.32는 Microsoft의 요청에 따라 소스 코드를 제공하지 않은 기술을 사용하여 이 작업을 수행합니다. 이 기술은 Whistler의 최종 릴리스에서 중단될 수 있으며 Microsoft는 시스템 통화 후크를 지원하는 방법을 모색하고 있습니다. Windows NT는 1996년 중반에 Regmon의 첫 번째 릴리스로 개척한 시스템 호출 후크를 지원하도록 설계되지 않았습니다.

다음은 문서화되지 않은 Filemon/Regmon 팁입니다. Windows NT/2000의 관리자가 아닌 계정에서 Regmon 또는 Filemon을 실행하는 방법을 묻는 전자 메일이 자주 옵니다. 특정 응용 프로그램이 관리자 계정에서 실행될 때 제대로 작동하지만 권한이 없는 사용자의 응용 프로그램에서는 작동하지 않는 경우가 많습니다. Regmon 및 Filemon은 애플리케이션이 실패하는 이유를 확인하는 데 유용합니다(일반적으로 파일 또는 레지스트리 키의 보안 설정과 관련된 문제). 그러나 권한이 없는 계정에서 Regmon 및 Filemon을 실행하면 Filemon 및 Regmon 모두 관리자 권한이 필요한 장치 드라이버를 설치하기 때문에 실패합니다.

그러나 이 문제를 해결할 수 있는 트릭이 있습니다. 관리자로 로그인하고 Filemon 또는 Regmon을 시작하면 나중에 권한이 없는 계정에서 실행할 수 있습니다. 이는 Filemon과 Regmon이 처음 실행할 때 드라이버를 설치하고 다음 실행에서 이미 로드된 드라이버에 액세스하기 때문입니다. 드라이버에 보안을 구현하지 않았기 때문에 권한이 없는 사용자는 드라이버가 로드된 후 도구를 실행할 수 있습니다. 보안 문제 아니냐구요? 맞습니다. 하지만 Filemon과 Regmon은 문제 해결 도구로 사용되기 때문에 저와 권한이 없는 계정에서 유틸리티를 실행하는 방법을 묻는 사람들은 이러한 특징을 기능으로 봅니다.

www.sysinternals.com/regmon.htm에서 전체 소스 코드가 포함된 Regmon v4.32를 다운로드하세요.

DEBUGVIEW V4.02

가장 많은 사용자 피드백을 받은 애플리케이션 중 하나는 다소 놀랍게도 DebugView입니다. 이 새 버전에는 제가 받은 많은 기능 요청을 해결하고 DebugView를 그 어느 때보다 강력하게 만드는 몇 가지 중요한 개선 사항이 포함되어 있습니다.

가장 눈에 띄는 점은 이제 DebugView가 각각 고유한 사용자 지정 색상이 있는 최대 5개의 강조 표시 필터를 지원한다는 것입니다. 이렇게 하면 디버그 출력에서 서로 다른 키워드를 동시에 찾아 쉽게 구별할 수 있습니다. 또한 DebugView는 Filemon 및 Regmon과 동일한 새 필터링 구문을 구현하여 substring 일치를 위해 와일드카드를 선택적으로 만듭니다.

이전 버전의 DebugView에 대해 받은 불만은 Win32 디버그 출력을 캡처하려는 경우에도 장치 드라이버를 설치할 수 없으면 DebugView가 실행되지 않기 때문에 DebugView를 실행하려면 여전히 관리 권한이 필요하다는 것입니다. 이 새 버전은 특별한 권한이 없는 계정에서도 실행됩니다. 드라이버를 설치하거나 액세스할 수 없으면 단순히 커널 모드 캡처 관련 메뉴 항목을 비활성화합니다.

로그인할 때 DebugView가 자동으로 출력 캡처를 시작하도록 하는 두 가지 기능은 트레이 최소화 옵션과 명령줄 스위치 지원입니다. 명령줄 스위치를 사용하여 시스템 트레이에서 DebugView를 시작하고 파일에 캡처하는 로그 출력을 표시할 수 있으며 DebugView를 시작한 후 메뉴 옵션을 사용하여 최소화 단추 동작을 정상적으로 최소화와 최소화 사이에서 전환할 수 있습니다. 시스템 트레이에.

Windows 2000 터미널 서비스의 원격 세션에서 DebugView를 실행하는 사용자의 경우 이제 DebugView는 원격 세션에서 실행 중인 애플리케이션과 선택적으로 콘솔 세션에서 생성된 Win32 출력을 캡처합니다. 이는 COM 서버 및 Win32 서비스를 원격으로 디버깅하는 데 유용합니다. 이러한 유형의 프로그램은 콘솔 세션에서 실행되기 때문입니다.

마지막으로 DebugView는 이제 Whistler Beta 1에서 작동하며 커널 모드 DbgPrint 함수에서 몇 가지 새로운 Whistler 변형의 출력 캡처를 지원합니다.

www.sysinternals.com/dbgview.htm에서 DebugView v4.02를 다운로드하세요.

INSIDE WINDOWS 2000, 3판

Windows 2000 내부에 대한 공식 서적을 지금 사용할 수 있습니다! David Solomon(www.solsem.com)과 Mark Russinovich가 공동 저술한 이 에디션은 네트워킹, 플러그 앤 플레이, 전원 관리, 서비스, 레지스트리, WMI, 부팅에 대한 새로운 내용을 포함하여 이전 버전보다 40% 이상 더 큽니다. 종료 및 저장. 또한 Windows 2000 내부를 조사하기 위해 다른 곳에서는 사용할 수 없는 몇 가지 강력한 도구가 들어 있는 CD도 포함되어 있습니다.

이 책을 위해 특별히 작성한 도구 중 하나는 라이브 시스템에서 마치 크래시 덤프를 보는 것처럼 Microsoft 커널 디버거인 i386kd와 WinDbg를 모두 실행할 수 있는 프로그램인 LiveKd입니다. 이 책에 제시된 많은 실험은 LiveKd를 사용하여 실행할 때 라이브 시스템에서 작동합니다. LiveKd는 컴퓨터의 실제 메모리를 크래시 덤프 파일인 것처럼 Microsoft 디버거에 제공하는 파일 시스템 필터 드라이버를 설치하여 작동합니다. LiveKd는 길이가 0인 의사 덤프 파일을 만들고 디버거가 파일에서 읽을 때 LiveKd는 실제 메모리에서 데이터를 반환합니다. 책의 정오표 및 업데이트 페이지에서 LiveKd v1.0과 여러 온액세스 바이러스 스캐너 간의 비호환성을 수정하는 LiveKd 패치를 확인하세요.

지금 www.sysinternals.com/insidew2k.htm을 통해 책의 목차를 확인하고 주문하세요.

11월 및 겨울 WINDOWS 2000 매거진

NTFS v4와 NTFS v5 간에 정확히 무엇이 변경되었는지 궁금하십니까? 그렇다면 Windows 2000 잡지의 11월호와 겨울호에 실린 2부작 시리즈를 확인하세요. 1부에서는 재분석 지점, 디렉터리 연결 지점, 볼륨 탑재 지점, 할당량 지원 및 통합 보안 설정에 대해 설명합니다. 2부에서는 암호화, 스트림, 분산 링크 추적 및 변경 저널에 대해 자세히 살펴보며 결론을 내립니다. 두 기사 모두 디스크상의 변경 사항과 이러한 새로운 기능의 내부 동작을 제시하면서 다른 기사보다 더 깊이 있게 안내합니다.

문서에서 제가 언급하지 않은 한 가지는 Windows NT 4용 NTFS가 실제 버전이 아니라는 점입니다.

www.sysinternals.com/publ.htm에서 당사의 모든 간행물에 대한 링크를 찾으세요.

WWW.MICROSOFT.COM의 SYSINTERNALS

Sysinternals는 지난 뉴스레터 이후 몇 가지 새로운 Microsoft KB(기술 자료) 문서에 등장했으며 Sysinternals를 언급하는 일부 이전 KB 기사도 추적했습니다.

  • Q260513 PRB: Visual Studio 제품을 설치할 때 오류가 발생함
    http://support.microsoft.com/support/kb/articles/Q260/5/13.ASP
    이 문서에서는 독자가 Filemon 및 Regmon을 사용하여 Microsoft Visual Studio 설치 문제를 해결할 것을 권장합니다.

  • Q202258 XADM: 시스템이 지정된 경로를 찾을 수 없음 - ID 번호: 0cx002003
    http://support.microsoft.com/support/kb/articles/Q202/2/58.ASP
    Microsoft는 실제로 사용자에게 Filemon을 사용하여 Exchange 5.0 서비스 팩 업그레이드 문제를 해결하는 과정을 안내하고 샘플 Filemon 출력 라인과 필터 설정에 대한 권장 사항을 제공합니다.

  • Q269383 PRB: VB/VBA 참조를 표시할 때 '시스템 레지스트리 액세스 오류' 메시지가 표시됨
    http://support.microsoft.com/support/kb/articles/Q269/3/83.ASP
    Regmon은 여러 키에 잘못된 권한을 적용하는 Seagate Crystal Reports의 버그로 인해 레지스트리 키에 액세스할 수 없는 경우 Visual Basic IDE의 참조 대화 상자가 보고하는 이유를 확인하기 위해 이 문서를 사용하여 참조를 가져옵니다. .

  • Q269251 버그: 제품을 열거할 때 Windows Installer 자동화가 중단될 수 있음
    http://support.microsoft.com/support/kb/articles/q269/2/51.asp
    Regmon은 여기에서 다시 강조 표시되며 Windows Installer 자동화 버그를 표시하는 데 사용됩니다.

  • Q276525 열린 핸들을 모니터링하면 컴퓨터가 응답하지 않을 수 있음
    http://support.microsoft.com/support/kb/articles/Q276/5/25.asp
    NtHandle은 NtHandle을 사용할 때 특정 조건에서 커널이 중단되는 Windows NT 4 SP6a의 버그를 공개했습니다. Microsoft는 나와 협력하여 문제를 해결했으며 핫픽스를 발행했습니다. NtHandle을 사용할 때 NT 4 시스템이 중단되면 이 문서에 대한 링크를 따라가야 합니다.

  • Q160660 새 서비스 팩에서 Ntregmon.exe로 인해 STOP 0x0000001E가 발생함
    http://support.microsoft.com/support/kb/articles/Q160/6/60.asp
    이 마지막 방법은 구식이지만 유용합니다. Regmon의 첫 번째 버전은 하드 코딩된 시스템 호출 번호를 사용하여 레지스트리 API를 후킹하기 위해 시스템 서비스 테이블을 패치했습니다. 때때로 시스템 호출 번호가 서비스 팩 사이에서 변경되기 때문에 이 기술은 매우 취약하며 저는 이를 예상하여 방어적으로 코딩하지 않았습니다(Regmon이 중단될 것을 두려워한 Andrew Schulman의 조언과 달리). 아니나 다를까, SP3는 몇 가지 새로운 시스템 호출을 도입했으며 Regmon은 잘못된 시스템 호출을 후킹할 때 시스템을 중단시켰습니다. 분명히 몇몇 사람들을 이로 인해 짜증이 났겠지만, 저는 그 덕분에 제 이름이 적힌 KB 문서를 얻게 되었습니다!

SYSINTERNALS 라이선스

Sysinternals에서 다운로드하는 소프트웨어는 무료이므로 요금을 지불하지 않고 사용할 수 있지만 재배포하거나 Sysinternals 소스 코드에서 배포하는 제품을 파생시키는 것은 허용되지 않습니다. 예를 들어, 여러 사용자가 특정 Sysinternals 도구가 유용하다고 생각하는 회사에서 근무하는 경우 도구를 내부 공유 또는 웹 사이트에 게시할 수 없습니다. 대신 사이트에 Sysinternals의 각 도구 홈에 대한 링크를 배치하세요. 또한 동료가 항상 최신 버전을 다운로드하도록 하는 데 도움이 됩니다.

Sysinternals 도구를 상용 제품과 함께 내부적으로 재배포하거나 셰어웨어 CD로 재배포하거나 Sysinternals 소스 코드를 기반으로 상용 제품 또는 재배포 가능 프로그램을 만들려는 경우 원하는 용도에 대한 세부 정보를 설명하는 이메일을 라이선싱@ 부서에 보내세요....

내부 정보

NFI

몇 개의 뉴스레터를 통해 Microsoft가 실수로 NT 4 SP4 CD에 포함시킨 DiskEdit 도구의 존재를 밝혔습니다. DiskEdit은 NTFS 및 FAT(흥미로운 것은 NTFS 지원이지만) 온디스크 데이터 구조를 검사하는 데 사용할 수 있는 매우 강력하지만 기발한 파일 시스템 구조 뷰어입니다. NT 4 SP 4 CD를 놓치고 NTFS 온디스크 구조를 탐색하는 데 관심이 있다면 완전히 어둠 속에 있는 것은 아닙니다. Microsoft는 NTFS 볼륨의 내부 구조를 이해하고 덤프할 수 있는 NFI(NTFS 정보)라는 무료 도구를 출시했습니다. 이 도구의 출력은 DiskEdit만큼 상세하지는 않지만 흥미롭고 드러납니다.

http://support.microsoft.com/support/kb/articles/q253/0/66.asp.에서 OEM 지원 도구의 일부로 NFI를 다운로드할 수 있습니다. 파일 이름으로 NFI를 실행하면 해당 파일에 대한 NTFS MFT 레코드가 덤프됩니다. 다음 예는 볼륨에서 할당량 관리를 활성화한 경우에만 존재하는 파일인 $Quota 메타데이터 파일에 대한 MFT 레코드를 덤프하는 NFI를 보여줍니다.

C:\nfi c:\$extend\$quota
File 24
\$Extend\$Quota
$STANDARD_INFORMATION (resident)
$FILE_NAME (resident)
$INDEX_ROOT $O (resident)
$INDEX_ROOT $Q (resident)

출력은 파일이 MFT에서 24번째 항목을 차지하고(파일 인덱스는 24) 표준 정보, 파일 이름 및 두 개의 인덱스 루트를 포함하는 4개의 속성을 포함하고 있음을 보여줍니다(그리고 인덱스는 기본적으로 항목의 조합된 목록입니다). , 디렉터리와 같은). NTFS v5의 최신 Windows 2000 Magazine 시리즈에서 NTFS가 $Quota 인덱스를 사용하는 방법을 설명합니다.

볼륨의 모든 파일을 덤프하려면 파일 이름 없이 NFI의 명령줄에 드라이브 문자를 지정하세요. nfi c:. 모든 메타데이터 파일을 포함하여 각 MFT 항목의 목록이 표시됩니다.

NFI에는 섹터 번호를 상주하는 파일로 변환하는 기능과 같은 다른 기능이 있습니다. 드라이브 C:의 파일 섹터 2345가 무엇인지 알고 싶으십니까? nfi c: 2345 명령을 사용합니다. 이것은 볼륨 세트 및 스트라이프 세트와 같은 소프트웨어 RAID 볼륨에서는 실패합니다. NFI는 NT 4와 Windows 2000 모두에서 작동합니다.

숨겨진 WIN9X 레지스트리 키

두 가지 문제 전에 저는 다음 뉴스레터에서 "숨겨진 Win9x 레지스트리 키"를 다루겠다고 말했고, 여러분 중 몇몇은 제가 이 사실을 깜빡했다는 것을 상기시켜 주었습니다. 그래서 이번 달에는 Windows 9x의 숨겨진 레지스트리 키에 대해 알려드리겠습니다.

몇 년 전에 Windows NT에서 숨겨진 레지스트리 키를 만드는 방법을 발견했습니다. 숨겨진 의미는 키가 Regmon을 사용하여 생성하는 응용 프로그램에 의해 액세스되는 것을 볼 수 있지만 Win32 프로그램을 작성하여 키의 값을 볼 수도 없고 Regedit 또는 Regedt32 Registry 편집기로 키를 볼 수도 없다는 것입니다. 숨겨진 키는 평가판 제품의 제한 시간과 같이 최종 사용자가 수정할 수 없도록 하려는 데이터를 저장하는 데 유용합니다.

숨겨진 레지스트리 키를 만드는 요령은 Win32 API가 빌드되는 시스템 호출 인터페이스인 네이티브 NT API에서 레지스트리 키를 카운트된 유니코드 문자열로 지정해야 한다는 사실을 깨달았기 때문입니다. 카운트된 유니코드 문자열은 길이가 null 종결자가 아니라 길이 필드로 표시되는 문자열입니다. 따라서 네이티브 API를 사용하면 "test\0test"과(와) 같이 null 문자가 포함된 레지스트리 키를 생성할 수 있습니다. Win32 API의 레지스트리 키 API는 null 종료 문자열을 기반으로 하므로 Win32 API를 사용하여 null 종료자가 포함된 레지스트리 키를 열 방법이 없습니다. 앞의 예제 키 이름을 RegOpenKey 또는 RegCreateKey에 전달하려고 하면 null 문자에서 문자열이 잘린 "test"으로 처리됩니다. Windows NT 및 Windows 2000에 포함된 것을 포함하여 기존의 모든 레지스트리 편집기는 Win32 API를 사용하므로 기본 API를 사용하여 null 문자 포함 이름을 만드는 애플리케이션은 숨겨진 키를 효과적으로 만듭니다.

이 방법은 Windows NT에서 작동하지만 Windows 9x에서는 어떻습니까? Regedit에 나타나지 않는 키에 액세스하는 Internet Explorer(IE)를 보여 주는 Regmon 로그 파일을 누군가 내게 이메일로 보내기 전까지는 Windows 9x에서 숨겨진 레지스트리 키를 만드는 방법이 있다고 생각하지 않았습니다. 직접 확인하려면 Regmon을 시작하고 포함 필터 "policydata"를 설정하세요. 그런 다음 IE를 시작하고(IE 4 및 IE 5의 모든 버전에서 작동) 웹 사이트를 방문합니다. Regmon에 출력이 표시되지 않으면 IE의 옵션 구성 대화 상자로 이동하여 내용 관리자가 활성화되어 있는지 확인하세요.

콘텐츠 관리자가 활성화되어 있거나 시스템에서 활성화된 적이 있는 경우 HKLM\PolicyData 키 및 해당 하위 키에 대한 액세스를 볼 수 있습니다. 그러나 Regedit를 보면 HKEY_LOCAL_MACHINE에서 PolicyData 키를 찾을 수 없습니다. 잠시 시간을 내어 무슨 일이 일어나고 있는지 알아낼 수 있는지 확인하세요.

대답은 IE가 RegLoadKey Win32 API를 사용하여 레지스트리 하이브를 동적으로 로드하고 필요한 값을 읽은 다음 RegUnloadKey로 하이브를 언로드한다는 것입니다. 하이브 이름은 C:\Winows\System\Ratings.pol입니다. 파일은 숨겨져 있고 읽기 전용이지만 attrib –r –h c:\windows\system\ratings.pol를 입력하여 표시할 수 있습니다.

Regmon에 표시되는 추적은 콘텐츠 관리자가 하이브에서 찾고 있는 정보를 보여 줍니다. 내용을 직접 탐색하려면 www.sysinternals.com/regload.zip에서 제 Regload 유틸리티를 다운로드하고 regload test c:\windows\system\ratings.pol 구문으로 실행하세요. 그런 다음 Regedit를 열고 HKLM\test을(를) 찾습니다. 찾을 값은 콘텐츠 관리자에서 지정하는 설정에 해당하며 하이브의 Users\FileName0 값에 명명된 구성 파일과 관련됩니다. 값은 일반적으로 인터넷 콘텐츠 등급 협회에서 정의한 등급 파일인 C:\Windows\System\RSACi.rat을 가리킵니다. 우연히 콘텐츠 관리자의 레지스트리 설정(예: HKLM\Test\Users\Default 아래)에서 "PleaseMom"이라는 다소 유머러스한 이름을 가진 값을 볼 수 있습니다. 이 값은 콘텐츠 관리자 설정 대화 상자의 일반 페이지에 있는 "감독자는 사용자가 제한된 콘텐츠를 볼 수 있도록 암호를 입력할 수 있음" 확인란에서 파생됩니다.

Microsoft가 이러한 레지스트리 값의 존재를 난독화하는 이유는 명백합니다. 그러나 디자인에는 상당히 심각한 약점이 있습니다. 내용 관리자를 활성화할 때 내용 관리자의 설정 대화 상자를 보호하는 암호를 지정해야 합니다. 이 암호는 HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Ratings\Key에 저장됩니다. 해당 값을 삭제하면 암호를 입력하지 않고도 내용 관리자 설정에 액세스할 수 있습니다! 이제 IE 개발자가 콘텐츠 관리자 설정을 난독화하는 데 어려움을 겪었다면 왜 이 백도어를 공개적으로 내버려 둡니까? 일반적인 Microsoft 보안 디자인인 것 같습니다. 그런데 Regload로 로드한 키를 언로드하려면 regload test을 입력하면 됩니다.

향후 예정 사항

새로운 WHISTLER 시스템 호출

Whistler는 향상된 안정성과 Windows 9x 운영 체제에서 사용자의 손쉬운 마이그레이션에 중점을 둔 Windows 2000 운영 체제의 점진적인 발전입니다. 그러나 일부 커널 변경 사항이 포함되어 있습니다. 가장 눈에 띄는 것은 소수의 새로운 시스템 호출과 내보낸(장치 드라이버에서 사용할 수 있음) 커널 기능입니다. 다음에는 이 새로운 커널 API의 미리 보기를 제공하겠습니다.


Sysinternals 뉴스레터를 읽어주셔서 감사합니다.

발행일: 2000년 11월 30일 목요일 오후 7:05 by ottoh

[회보 보관 ^] [< 볼륨 2, 번호 4] [볼륨 3, 번호 1 >]