본문 바로가기

일기장/악성코드

악성코드 공격 -3 (인증서 차단 / 신뢰지 않은 게시자)

728x90

1,2 차례 공격을 막고 나니 공격을 치료하는 프로그램에 쓰인 인증서를 차단하여 동작하지 못하게 하였다


1. 증상

'시스템 관리자가 이 앱을 차단하였습니다'

 

2. 원인&공격 방식 분석

배포사측 인증서를 신뢰되지 않은 게시자에 등록하여 해당 인증서로 쓰인 프로그램들이 실행할 수 없게 만듦

인터넷 익스플로러에서 도구 -> 옵션 -> 내용 -> 게시자 ->신뢰되지 않은 게시자

 

3. 해결방법

- 우선 신뢰되지 않은 게시자에서 직접 눌러서 제거도 가능하나 불특정 다수 PC에 일일이 설정할 수 없으므로 해당 정보가 들어있는 레지스터 삭제

procedure UntrustedCertificates;
const
  //신뢰할 수 없는 인증서 레지스터 경로
  Key = '\SOFTWARE\Policies\Microsoft\SystemCertificates\Disallowed\Certificates';   
  FP1 = '1234abcd';			//해당 인증서1의 지문
  FP2 = 'abcdef12345';		//해당 인증서2의 지문
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
          if (SubNameList[i] = UpperCase(FP1)) or (SubNameList[i] = UpperCase(FP2)) then
          begin
            try
              Reg.DeleteKey(SubNameList[i]);
            except
              On E: Exception do
              begin
                Continue;
              end;
            end;
          end;
        end;

      finally
        FreeAndNil(SubNameList);
      end;

      Reg.CloseKey;
    end;

    Reg.RootKey := HKEY_CURRENT_USER;

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

      finally
        FreeAndNil(SubNameList);
      end;

      Reg.CloseKey;
    end;

  finally
    FreeAndNil(Reg);
  end;

나의 경우는 지문값으로 인증서를 대조했다

 


728x90