오늘 윈도우 서버 로컬 Administrator 계정 패스워드를 몰라서 강제 초기화 해야할 일이 생겼는데, 기존에 소개해드렸던 몇가지 프로그램 말고 윈도우 자체 기능을 이용해서 일종의 트릭으로 해결하는 방법을 소개해드리겠습니다.


트릭의 주인공은 바로 접근성 센터를 띄워주는 Utilman.exe 파일입니다.


로그온 화면 하단 구석에 보시면 아래와 같은 버튼이 있죠? 그걸 누르면 접근성 센터가 뜹니다.

윈도우 7~10, 서버 2008~2019 모두 동일하게 활용 가능합니다.



만약 저 화면에서 접근성 센터 대신에 CMD 창을 관리자 권한으로 띄울 수 있다면 어떻게 될까요? net user 명령어로 패스워드를 변경할 수 있지 않을까요?


바로 그 점을 활용해서 Utilman.exe 대신 cmd.exe가 뜨도록 처리해주면 패스워드를 초기화 할 수 있습니다.


파일 변경은 당연히 다른 OS나 PE(Preinstallation Environment), 윈도우 설치 DVD, USB 등으로 부팅을 해서 진행하면 되겠죠?


아래 예제는 윈도우 서버 2019에서 ISO 이미지로 부팅해서 복구하는 모습입니다.


1. ISO로 부팅

윈도우 설치 이미지 ISO로 부팅하면 아래와 같은 화면에 진입하게 됩니다.



2. Shift + F10 입력

Shift + F10 입력하면 아래와 같이 CMD 창이 뜹니다.



3. 파일 백업 및 교체

아래와 같이 C:\Windows\System32 디렉터리로 이동하여 Utilman.exe 파일을 백업해두고 cmd.exe를 Utilman.exe로 복사합니다. 물론 패스워드 복구해야할 윈도우 OS가 C 드라이브에 설치되어 있다고 가정한 예제입니다.


C:

cd C:\Windows\System32

move Utilman.exe Utilman.exe.bak

copy cmd.exe Utilman.exe



4. 리부팅 후 접근성 센터 띄우기

아래와 같이 리부팅 후 접근성 센터를 누르면 교체된 cmd.exe 창이 뜹니다.



5. net user 명령어로 패스워드 변경하기


net user 계정명 신규패스워드


net user Administrator qwer1234!


만약 기존 계정 이름조차 모른다면 그냥 net user 라고 입력하면 계정 리스트가 보일겁니다.



6. 변경된 패스워드로 로그인

방금 net user 명령어로 변경한 패스워드로 로그인 해보시면 잘 될겁니다.



7. Utilman.exe 파일 원복

로그온 되셨나요? 이대로 사용하면 로그온 화면에서 cmd.exe 창을 띄울 수 있는 취약한 상태로 운영되니 그대로 두면 안되겠죠? 다시 가짜 Utilman.exe 파일은 지우고 백업해뒀던 Utilman.exe.bak 파일을 복사해서 Utilman.exe 파일을 만들어두면 됩니다. 이건 굳이 그림으로 설명 안드려도 충분히 하실 수 있을겁니다.


8. 패스워드 원복

아까 net user 명령어로 원래 사용하던 패스워드로 변경했다면 상관없겠지만, 본 글의 예제를 그대로 따라한다고 qwer1234! 로 변경했다면 다시 다른 것으로 변경해주는게 좋겠죠? 동일하게 CMD 창을 띄우고 net user 명령어로 원하는 패스워드로 변경해두시는게 좋겠습니다.



이상으로 윈도우 로컬 계정 패스워드 초기화 (응급 복구) 소개를 마치겠습니다.

  1. 대항해시대
    2020.03.08 14:09

    스누피님 안녕하십니까
    다름이 아니라 스누피님께서 옛날에 만드시
    루프백 어댑터 자동 카운터 증가 프로그램에 대한 문의를 드리려
    하려고 했으나 어디다 드려야 할지 몰라서 여기다 문의를 드립니다
    그전에 루프백 자동 카운터 증가 프로그램을 잘 쓰고 있었는데
    윈도우10에서 어떻게 된건지 작동을 하지 않습니다
    이더넷2의 아이피 끝자리가 자동 증가 하지 않으니
    프로그램에 대해 1도 모르는 제가 어떻게 할지 몰라 사용을 못하고 있습니다 ㅠㅠ
    아래는 프로그램(메모장으로 만드신거) 내용입니다
    혹시 윈도우10에서 사용 가능하게 변경 가능할까요?
    혹시 가능하시다면
    hbw0225@naver.com 으로 메일 주시거나 답변 부탁 꼭좀 드립니다 ㅠㅠ

    ------------------------------------------------------------------------------------------
    @echo off

    rem 윈7은 로컬 영역 연결 2 앞의 rem제거하고, 이더넷 2 라인 제거
    set interface="이더넷 2"

    set interface="로컬 영역 연결 2"
    set ip_default=192.251.
    set change_sec=10

    rem start /D "D:\대항해시대\도우미" /b dholauncher.exe
    rem 대항 런처 사용하시는 분은 위의 경로 수정 후 한 아이콘으로 실행 가능.


    rem http://snoopybox.co.kr/1404
    rem ********************** title ************************
    title 루프백 ip 자동 증가 %change_sec%초
    rem ********************** 창 크기 ************************
    mode con cols=40 lines=2
    rem ********************** 창 color ************************
    rem 첫째 자리는 배경색이고 둘째 자리는 문자색입니다
    rem color 07

    rem 0 = 검정색 8 = 회색
    rem 1 = 파랑색 9 = 연한 파랑색
    rem 2 = 초록색 A = 연한 초록색
    rem 3 = 옥색 B = 연한 옥색
    rem 4 = 빨강색 C = 연한 빨강색
    rem 5 = 자주색 D = 연한 자주색
    rem 6 = 노랑색 E = 연한 노랑색
    rem 7 = 흰색 F = 밝은 흰색

    rem *******************아래 부터 코드************************
    rem ip.txt : ip 끝자리 저장 파일
    rem ip2.txt : ip 셋째자리 저장 파일
    rem ip : ip 끝자리
    rem ip2 : ip 셋째자리
    rem ip_addr : full address

    :change_loop
    if not exist ip.txt echo 1 > ip.txt
    if not exist ip2.txt echo 0. > ip2.txt

    for /f "tokens=1 delims=." %%j in (ip2.txt) do set ip2=%%j
    rem echo ip2 = [%ip2%]
    for /f "tokens=1 delims=" %%i in (ip.txt) do set /a ip=%%i+1
    rem echo ip = [%ip%]
    if %ip% GTR 254 (
    set ip=1
    set /a ip2+=1
    )
    rem echo if ip = [%ip%]
    rem echo if ip2 = [%ip2%]
    if %ip2% GTR 254 (
    set ip2=0
    )
    rem echo if ip2 = [%ip2%]

    echo %ip% > ip.txt
    echo %ip2%. > ip2.txt

    set ip_addr=%ip_default%%ip2%.%ip%
    cls && echo %ip_addr% 설정 중...
    netsh -c int ip set address name=%interface% source=static addr=%ip_addr% > nul

    set apply_time=1
    :wait_loop
    rem 1초 마다 체크, 안 기다리면 cpu 점유율 높아짐.
    cls && echo %ip_addr%(%apply_time%) 적용 기다리는 중...
    choice /t 1 /d n > nul
    set /a apply_time+=1

    rem 비교
    ipconfig | findstr %ip_addr% > nul
    if not %ERRORLEVEL% == 0 goto wait_loop
    set count_down=%change_sec%
    :wait_loop2
    cls && echo %ip_addr% %change_sec%초(%count_down%)간 유지 중...
    choice /t 1 /d n > nul
    set /a count_down-=1
    if %count_down% GTR 0 goto wait_loop2

    rem choice /t %change_sec% /d n > nul
    goto change_loop

    • BlogIcon snoopybox
      2020.03.09 10:32 신고
      수정 및 삭제

      일단 해당 배치파일은 제가 작성한 적이 없습니다.
      내용을 보니 인터페이스 이름을 수정하시면 될 것 같은데요
      윈도우 10에서 KM-TEST 루프백 어댑터를 추가하고 IP 설정을 하셨나요?
      추가하시면 아마 이름이 "이더넷 2"라고 잡힐 것 같습니다.
      그거 기준으로 한다면 붙여주신 스크립트의 6번째 라인을 수정하시면 되겠네요.

      set interface="로컬 영역 연결 2" 대신
      set interface="이더넷 2" 으로

    • 대항해시대
      2020.03.09 14:59
      수정 및 삭제

      아 스누피님께서 만드신게 아니군요
      내용중에
      rem http://snoopybox.co.kr/1404
      이런 내용이 있어 스누피 님이 만드신줄 알았습니다
      일단 답변 감사드리고
      이더넷2 로 바꿔도 제대로 작동을 하지를 않습니다 ㅠㅠ
      기존 윈7에서는 이걸 실행 시키면
      아이피 끝자리가 10초마다 자동으로 1씩 증가하면서 변하는데
      윈10에서는 증가 하지가 않네요 ㅜㅜ
      혹시나 이걸 해결할 방법을 알고 계실까 싶어 문의 드려 봅니다 ㅠㅠ

  2. 카도
    2020.07.29 17:07

    이게 아직도 되는군요ㅋㅋㅋ

  3. 미네르비
    2020.09.10 13:45

    알려주신 방법으로 해 보았는데 레이드 구성된 서버에서는 안되네요 ㅠㅠ 레이드 구성된 서버는 방법이 없는건가요?

    • BlogIcon snoopybox
      2020.09.15 00:56 신고
      수정 및 삭제

      ISO 부팅에 들어있는 PE (boot.wim)에 Raid Controller Driver가 포함되어 있지 않아, C 드라이브 인식을 못해서 그럴겁니다. 설치 화면에서 Driver 포함된 ISO를 넣고, 다음 다음 누르다보면, 드라이버 찾는 화면이 나오고, 거기서 드라이버 파일을 지정해준 후, Disk를 인식시킨 다음, Shift + F10 눌러서 작업 진행하면 될겁니다.