독까의 이야기

특정 고객사를 대상으로 침해 피해 발생. 

윈도우 구버전에서 사용되는 SAM 잠금 도구 (Syskey) 를 이용한 시스템 잠금. (ko.wikipedia.org/wiki/SAM_%EC%9E%A0%EA%B8%88_%EB%8F%84%EA%B5%AC)

고객사 관리자 계정 패스워드가 노출되어 원격 접속이 가능하게 된 상태에서 syskey 로  잠금 추정.

C:\Windows\System32\config\RegBack 폴더에 기존 레지스트리 정보 파일이 있을 경우에는 복구 가능. 

 

1. Windows 설치 CD 를 이용하여 부팅.

복구 모드 진입 후 문제 해결 선택.

고급 옵션 - 명령 프롬프트 선택

 

2. CMD 에서 레지스트리 파일 복사

copy c:\windows\system32\config\regback c:\windows\system32\config

복사 완료되었으면 리부팅으로 복구 작업 완료 됨. 

# 1

신규 고객사의 서버를 세팅하던 중, 로컬 보안 정책 일부 수정을 위해 프로그램을 실행했다.

시작 - secpol.msc - 로컬 정책 - 보안 옵션 을 클릭했는데, 아래와 같은 오류 창이 호출 됐다.


신규 설치 된 서버 2대 와 테스트용으로 사용하는 서버에서 동일 증상이 확인 됐다. 

해당 장비들의 OS 는 Windows Server 2016 STD 이다. 



# 2

오류가 발생 된 서버들의 wsecedit.dll 파일을 확인해 본다. 

C:\Windows\System32\wsecedit.dll

파일의 수정 날짜가 2020.09.02 로 확인 된다. 

2020년 9월 보안 업데이트 후 파일이 변경 된 것으로 확인되었다. 


9월 보안 업데이트를 진행하지 않은 서버에서 보안 옵션 호출 및 파일 수정 날짜를 확인 한다.


보안 옵션 호출 정상이며, 파일 수정 날짜는 2020.04.08 로 확인된다. 



# 3

이전 버전의 wsecedit.dll 파일로 교체를 진행한다. 

보안 옵션 호출이 정상 실행되는 서버에서 wsecedit.dll 을 복사해서 임의 경로에 저장한다. 

여기서 두 가지 방법으로 파일 교체가 가능하다.

1) 서버 전원 종료 후 복구 모드 진입해서 CMD 에서 파일 덮어쓰기

2) wsecedit.dll 파일 사용자 권한 변경 후 삭제 / 이전 버전 파일 복사


1) 의 경우 전원 종료가 불가피하므로 지양한다. 따라서 2) 의 방식으로 해결 한다. 


일반적으로 system32 폴더 안의 파일들은 권한 문제로 삭제 및 덮어쓰기가 불가하다. 



CMD 실행 후 아래의 작업을 순차 진행한다. 


wsecedit.dll 파일의 소유권을 가져온다.

takeown /f C:\Windows\System32\wsecedit.dll 


사용자 계정에 권한을 부여한다.

cacls C:\Windows\System32\wsecedit.dll /G 사용자계정:F 


wsecedit.dll 파일을 삭제하고, 이전 버전의 파일로 대체한다.

del C:\Windows\System32\wsecedit.dll 

copy c:\wsecedit.dll c:\Windows\System32\


대체 된 파일의 수정 일자를 확인한다.

 dir -filename wsecedit.dll


이전 버전 파일로 대체 후 보안 옵션 호출 정상 확인 되었다. 



# 4

해당 오류가 Windows Server 2016 버전에 한해서 발생되는 문제인지는 명백히 확인이 되지 않았으나, 

9월 보안 업데이트를 진행한 Windows Server 2012 R2 서버에서 확인 된 wsecedit.dll 파일의 수정 일자는 2020.08.04 이다. 


보안 옵션 호출도 정상 실행된다. 



# 5

Windows Server 2016 OS 가 설치 된 서버는 2020년 9월 보안 업데이트는 넘어가는게 좋겠다. 

동일 커널을 사용하는 2019 에서도 문제가 발생할 것 같긴한데 위험을 감수하고 테스트 하고 싶지는 않다. 

MS 에서 빨리 해당 문제를 확인하고 패치를 진행해야 할텐데. 


오라클 12c 설치를 해봤으니깐, 삭제 하는 것도 테스트를 한다. 

기본은 11g 삭제때와 동일하다.


# 1 

오라클 프로그램 항목들 중에서, Universal Installer 를 실행한다.


프로그램이 실행되면, "제품 설치 해제" 를 클릭한다.


설치 되어 있는 제품 체크 후, 제거 버튼 누른다. 


그러면 11g 때와 마찬가지로 경고창 호출 된다. 배치 파일 실행해서 삭제하라는 얘기다. 한결 같은 오라클이다. 



# 2

경고창이 시키는대로 배치 파일 실행하러 경로 이동한다.

D:\app\Administrator\product\12.2.0\dbhome_1\deinstall

CMD 를 관리자 모드로 실행해서 배치 파일 실행하던,  파일 탐색기에서 deinstall.bat 를 관리자 권한으로 실행하던 알아서 하면 된다. 

나는 그냥 CMD 에서 한다. 


뭐 하라고 나오면 그냥 Default 로 쭉쭉 진행하면 된다. 


몇 분 지나니깐 삭제 다 됐다고 나온다. 



# 3

CMD 에서 sqlplus 실행 및 1521 리스너 체크해도 아무것도 안나온다. 


서비스 목록에서도 안 보인다. 안 보이는데 캡처하면 무쓸모니깐 생략한다.


11g 때와 마찬가지로, 완전 삭제를 위해서 오라클 폴더 및 관련 레지스트리까지 삭제한다.

레지스트리 편집기 실행 후, 찾기 : oracle 입력 후, F3 계속 누르면서 나오는 오라클 12c 관련 항목 다 삭제해버리면 된다. 

java 나 oledb 관련 삭제하면 안 됨. 

리부팅 1회 하면 끝난다. 

뭐 삭제도 어려운거 아니니깐 그냥 해보면 된다.