본문 바로가기

일기장/악성코드

악성코드 공격 -2 (SRP - 소프트웨어 제한 정책)

728x90

1. 증상

DLL 로드시 '응용 프로그램을 제대로 시작하지 못했습니다. 응용프로그램을 닫으시려면 [확인]을 클릭하십시오' 등의 OS마다 조금씩 다른 에러 내용으로 프로그램 강제 종료

 

2. 원인&공격 방식 분석

기본적으로 위와같이 로컬 보안정책에 설정되는 값인데 윈도우 home의 경우 로컬보안정책 조차 설치되어있지 않아 추가 설치를 해야 한다

공격자의 경우 이 설정값이 레지스터에 등록되는것을 파악하여 바로 레지스터에 값을 등록하는형식으로 공격하였다

 

3. 해결방법

regedit를 실행해보면 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\safer\codeidentifiers\0\path
이 경로에 uuid로 보이는 폴더가 있고 그 경로마다 하나씩의 프로그램을 차단하는 값을 가지고 있었다

3개의 프로그램을 차단중이며 itemData를 보면 어떤 파일을 차단하는지 확인가능하다

해당 경로에 레지스터들을 모두 탐색하며 삭제해주었으며 델파이에 내장되어있는 Registry를 이용하여 손쉽게 접근 가능하다
당시는 급해서 모두 제거하였지만 돌이켜보면 itemData값을 확인해보는 절차가 필요했다

uses
	Registry;

procedure SoftwareRestrictionPolicies;
const
  Key = '\SOFTWARE\Policies\Microsoft\Windows\safer\codeidentifiers\0\Paths';
var
  Reg: TRegistry;
  SubNameList: TStringList;
  i: Integer;
begin
  Reg := TRegistry.Create;

  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;

    if Reg.OpenKey(Key, false) then
    begin
      SubNameList := TStringList.Create;
      try
        Reg.GetKeyNames(SubNameList);
        for i := 0 to SubNameList.Count - 1 do
        begin
          try
            Reg.DeleteKey(SubNameList[i]); 
          except
            On E: Exception do
            begin
              Continue;
            end;
          end;
        end;
      finally
        FreeAndNil(SubNameList);
      end;
      Reg.CloseKey;
    end;
  finally
    FreeAndNil(Reg);
  end;
end;            

 

 

참고 : docs.microsoft.com/ko-kr/windows-server/identity/software-restriction-policies/software-restriction-policies


 

728x90