기타

서버의 기술적 취약점 추가 항목 고찰

수달정보보호 2025. 9. 7. 20:50

현재 금융권 프로젝트에서 관리체계 진단, 기술적 취약점 진단을 모두 수행하고 있는데, 참 코에 걸면 코걸이, 귀에 걸면 귀걸이 같은 상황을 자주 겪으며 회의감을 느끼곤 한다.

 

특히 기술적 진단이 그러한데, 점수에 지나치게 집착하는 현재의 국면에 변화가 오지 않는 한, 진단을 수행할 때마다 회의감을 느끼지 않을까 싶다.

 

그런데 관리적 진단이건, 기술적 진단이건, 수행을 하다 보면, 어느새 금보원에서 요구하는 기준을 '최소한'의 기준이 아닌, 최대한의 기준으로 받아들이는 경우를 항상 접하게 된다. 고객사 담당자도, 컨설턴트인 우리도 말이다.

 

하지만 본디 컨설팅은 보안 환경의 변화에 맞춰 한 발자국 더 나아가야 하고, 기술적 취약점 진단에서 조금 더 항목을 만들어 보자는 생각을 하게 되었다. 물론 너무 깊게 파고 들어서는 안 된다. 취약점 진단은 어디까지나 포괄적인 영역의 '최소한'의 기준으로 접근해야 하니 말이다.

 

1. 불필요한 서비스 프로세스 제거

웹 서비스 프로세스 권한 제한에 대해서는 따지고 있는 항목이 있으나, 프로세스 자체에 대해서는 따지지 않는 것을 확인하고 생각해 보았다. 불필요한 서비스 프로세스에 대해 정의하고, 동작할 경우 제거하도록 수행하는 것이다. 여기서는 무엇이 '불필요'한지를 정의하는 것이 조직 내에서 중요할 것이다. 개인정보에 대한 위협이 있으면 불필요한지, 알려진 불필요 파일을 불필요하다고 정의할 것인지 등 말이다. 여기서 systemtcl, netstat, lsof 같은 명령어들을 활용하여 주기적인 점검을 확인하는 것도 좋은 방법이 될 것이다.

 

2. '특정 경로' 내 불필요한 파일 및 권한 제거 

숨김 파일 및 디렉터리에 대해 수동 점검을 수행하는 항목이 있으나, 나는 특정 경로에 있는 것을 따져보는 것을 권하고 싶다. 서버 내 특정 경로에 불필요한 파일 또는 권한이 있을 경우 침입자에게 시스템 정보 및 내부 정보를 제공할 수 있기 때문에 특히나 '특정 경로'에 초점을 맞춘 것이다. 여기서도 '특정 경로'를 정의하는 것이 중요할 텐데, 웹 루트 디렉터리 같은 곳은 반드시 포함되어야 할 것이다. 권한의 경우, rwx나 noboday 같은 이상한 녀석들은 꼭 잡아내야 할 것이다.

 

3. 불필요한 포트의 리스팅 상태 제거

불필요한 포트가 활성화되어 있으면 비인가자가 불법적인 접속을 시도할 수 있으므로 불필요한 포트를 차단하여 외부 접속으로 인한 내부 네트워크 장애 발생과 데이터 손실을 예방해야 한다. 이에 따라 불필요 포트의 리스닝 여부를 확인하여 프로세스를 종료해야 할 것이다.

그리고 여기서 한 발자국 더 나아간다면, '특정 경로'라는 포인트를 더하여, 해당 불필요 포트를 사용하는 PID와 실행 파일 경로를 함께 확인할 수 있다면 좋을 것이다. 여기서는 물론 화이트리스트 방식이 정석적일 것이다.

 

4. Mutex/Lock 파일 제거

특정 경로에 생성되는 뮤텍스/락 파일을 점검하여 악성코드 실행 여부를 점검하는 것이다. 주로 생성되는 경로인 /tmp, /var/run 같은 곳은 주의깊게 확인해야 할 것이다. 

특히 이때는 파일이 존재할 시 다른 점검 방법을 통해서 추가 검증을 할 필요가 있을 것이다. 왜냐하면 파일의 존재 여부만으로는 잠금이 유효한지 확인할 수 없기 때문이다. 단순히 파일이 있다는 사실만 믿고 다음 단계를 진행하면 유령 잠금, 악의적인 조작에 속을 가능성 등의 문제가 생길 수 있다. 추가 검증으로는 fuser 등의 명령어를 통해 락 파일 내부에 저장된 PID가 현재 실행 중인 프로세스와 일치하는지 확인하는 방법 등이 있을 것이다.

 

5. 악성코드 접속 확인

대상 서버에 악성코드에서 확인된 도메인 접속을 확인하여 악성코드를 이용한 외부자의 공격을 방지하기 위한 항목이다. ss 명령어가 존재하는지, BPF door로 알려진 악성 도메인의 IP 주소가 조회되는지, 거기서 조회된 IP 주소 형식이 유효한지 정규 표현식으로 확인하고, 해당 IP로 연결된 TCP 연결 상태를 조회하는 것이다. 그리하여 실행 파일 경로에 실제로 존재하는지 확인하는 정도면 되지 않을까? 여기서 만약 지속성이 확인되는 경우는 특히 백도어 여부를 확인하여 차단하는 것이 중요할 것이다. 지속성 확인 방법으로는 ~/.bashrc, ~./.profile, /etc/crontab 등을 활용하여 시작 스크립트나 스케줄러를 통해 확인하는 길이 있을 것이다.

 

6. 커널 스택 내 비정상적인 Call Loop가 존재 확인

대상 서버 커널 스택 내에 비정상적인 Call Loop를 확인하여 그것을 이용한 외부자의 공격을 방지하기 위한 항목이다. 커널 스택에서 커널 함수 패턴을 검색하고, 패턴이 감지되었을 경우 실행 파일 경로가 실제로 존재하는지 확인하여 5와 마찬가지로 백도어 여부 등을 확인 후 차단해야 할 것이다.

여기서는 kprobes나 ebpf와 같은 도구를 이용해 커널 함수 호출을 동적으로 추적하거나, chkrootkit, rkhunter와 같은 전문적인 루트킷 탐지 도구를 활용할 수 있을 것이다.

 

 

 

 

 

 

728x90