블로그

SKTelecom 유출 사건

Table of Contents

BPF 필터란 무엇인가? (그림 포함, 5줄 이상) #

BPF는 네트워크 페킷을 분석할 수 있는 VM이다. 일반적으로 커널에 구현되어 있으며 Interpreted 또는 Just-in-time 컴파일러로 분석한다.

Interpreted는 줄 하나하나를 잘 읽어 잘 분석해 코드를 실행하는 것이다. Just-in-time 컴파일러는 어셈블리 코드로 변환하여 더욱 최적화된 성능을 낼 수 있도록 한다. 이렇게 변환된 코드가 실행되면, 그 다음부터는 빠르게 처리되기 때문에 성능 면에서 유리하다.

BPF 필터는 네트워크 트래픽을 필터링하고 모니터링하는 데 사용되며, 보안 및 성능 향상에 중요한 역할을 한다. 필터링 과정에서 패킷의 헤더나 데이터 내용을 분석하고, 해당 패킷이 유효한지 여부를 판단한 후 처리할 수 있다. 또한 BPF 필터는 시스템 자원을 효율적으로 사용하면서 필요한 정보를 빠르게 추출할 수 있어, 네트워크 관리 및 보안에 필수적인 도구로 활용된다.

이러한 장점때문에 리눅스 커널에는 eBPF라는 BPF의 확장이 있는데, 이는 네트워크 페킷 외에도 일반적인 시스템 정보등도 관리할 수 있게 한다. eBPF는 프로그램을 커널 공간에 로드하고, syscall, filesystem, processes and threading 등 다양한 영역에서 QoS 분석과 정보 보호에 적용할 수 있다. 이를 통해 커널을 재컴파일하거나 커널 모듈을 쓰는 것등을 하지 않고도 커널 코드를 실행할 수 있다. 예를 들어, Wireshark의 libpcap 라이브러리는 (e)BPF 필터로 페킷 분석을 한다.

어떤점 때문에 BPF 필터를 악용하는 것일까? (그림 포함) #

감지가 어렵고 커널에 구현되어 있으므로 더 많은 권한을 탈취할 수 있다. 공격자는 BPFdoor를 커널 권한으로 악성코드 실행 등을 할 수 있었다. 이러한 권한으로는 컴퓨터에 그 어떠한 공격이 가능하다. 또한, BPF 프로그램은 커널 내에서 동작하기 때문에 탐지하기 어렵고, 로그를 남기지 않으며 우회가 용이하다. 이러한 특성은 루트킷 등 악성 행위에 악용될 소지를 제공한다. 결국, 유용한 시스템 분석 도구인 BPF가 공격자에게는 권한 상승을 위한 수단이 될 수 있다.

이를 막기 위해서는 어떤 방법이 있을까? #

서버를 air gap한다. 이렇게 하면 공격이 많이 어려워진다. 또한, 몇 개의 회사에 과의존하지 않으려고 노력해야 한다. 이는 한 회사가 털리면, 국민 반정도의 사람들이 해킹당하는 것이기 때문이다. 이러한 이유로 카카오톡과 같은 회사에 SNS/채팅 외에도 지도, 금융, 게임, 택시 호출, 다음 검색 등의 정보를 가지고 있다는 것이 무섭다고 생각한다. 나는 이런 것을 방지하기 위해 한 회사가 우리 정보를 다 가지면 안되고, Microsoft Outlook에서 Gmail로 이메일을 보낼 수 있는 것 처럼 다양한 서비스들이 상호호환성이 강해야만 한다. 또한, 회사에서도 우리의 문자등을 접근할 수 없어야만 한다. 왜냐하면, 회사에서조차 접근을 못하면 곧 공격자가 개개인의 기기를 해킹할 수 밖에 없다. 이러한 구조를 End-to-End Encryption이라고 영어로 한다. 이러한 현존 서비스의 예시로는 Matrix Protocol아라고 있다. Matrix Protocol은 이메일과 비슷하게 한 서버의 사용자와 다른 서버의 사용자끼리 채팅이 가능한 채팅 플랫폼이다. 이는 이메일과 달리, 지연이 적고, 실시간 대화가 가능한 수준의 Instant Messaging 플랫폼의 역할을 잘도 수행한다. 이러한 것이 불가능하다는 회사들은 말 그대로 회사의 사익을 위해 사용자 및 고객을 기만하는 것이다.

이외에도, 코드는 과유불급이 적용된다. 왜냐하면, 코드가 많을 수록 취약할 가능성이 높다. 이는 크게 2가지 이유 때문이다.

  1. 코드의 양이 많아질수록, 코드에 버그나 취약점이 있을 확률이 그냥 오른다. 이는 마치 사공이 많으면 배가 산으로 가듯, 코드가 많으면 그 안에서 문제가 생길 가능성도 함께 늘어난다. (이때, 배의 사공은 코드와 같은 존재로 둔다)
  2. 복잡도가 증가하면 시스템 전체의 예측 가능성이 줄어든다. 이는 개발자의 실수를 유발할 가능성을 높이며, 결과적으로 보안 사고로 이어질 수 있다.

이외에도 SKTelecom은 서버가 3만 3천 개 이상있는 회사인데 이중 하나라도 취약하면 다 무너지는 것이다. 영어로는 “Security is only as strong as the weakest link"라고도 하는 이유이다. 보안은 언제나 가장 취약한 부분으로 정의된다는 말이다. 특히, Air gap이 중요한 이유는 망의 분리가 가능하기 때문이다. 인터넷에 연결된 서버는 절대로 IMSI와 K값을 같이 보관해서는 안된다. 이를 여러 서버에 분산시켜도 부족할 망정, 인터넷에 연결된 하나의 서버에 IMSI와 K값을 같이 보관했다는 사실은 egregiously and grossly negliegent했다고(극히 중대하고 명백한 과실이였다고) 생각한다. 이외에도, 암호화가 거의 안되었다는 사실은 예전의 싸이월드 (SK 소유) 해킹 사건과 너무나 비슷한 것 같다고 생각한다.

특히 같은 모회사인 SK가 해킹당했다는 것은 극히 중대하고 명백한 과실이였다는 나의 주장을 뒷받침한다고 생각한다 #

P.S. SK 또해킹?? ㅋㅋㅋ