☑️ 모사환경을 활용한 스마트 시티 공격 시나리오 구현
스마트시티 공격 구상도

스마트 시티의 공격 시나리오는 공격자가 외부 네트워크에서 내부 네트워크로 침투하여 각 프로토콜의 취약점을 이용하여 공격을 수행하는 것으로 구상되었습니다.
공격 순서
스마트시티를 외부에서 관제하기 위한 카메라가 외부망에 노출되어 있어 공격자는 포트 스캔을 통해 카메라의 존재 여부를 파악합니다.

공격자는 카메라의 취약점을 활용하여 스마트시티 내부망으로 침투합니다.

이후 공격자는 내부망의 프로토콜을 활용하여 신호등, 가로등, 스마트 빌딩을 공격합니다.



1. 스마트 시티 포트 스캔
공격자는 스마트 시티의 공인 IP를 알고 있는 상태에서 해당 IP에서 외부로 개방된 포트를 확인합니다. 이 과정에서 스마트 시티 관리자가 외부에서 스마트 시티를 감시하기 위해 공개한 카메라를 확인할 수 있게 됩니다.
Nmap을 통한 포트 스캔

쇼단을 활용한 포트 확인

▶️ 대응 방안
외부 네트워크에서 스마트 시티의 공인 IP에 접근할 때는 접근 가능한 포트를 제한해야 하며, 관리자 페이지와 같은 웹 페이지는 외부에 공개되지 않아야 합니다.
그러나 카메라 영상을 외부에서 볼 필요가 있는 경우, 암호화 통신을 적용하여 영상 데이터의 송수신을 보호해야 합니다. 이를 통해 허가 받지 않은 사용자는 영상을 볼 수 없도록 보호됩니다.
2. 카메라 취약점을 활용한 내부망 침투
공격자는 카메라의 버전을 확인하고 펌웨어 업데이트 페이지에서 입수한 펌웨어를 활용하여 취약점을 분석합니다.

공격자는 취약점 분석 도구를 활용하여 펌웨어의 NTP 설정에 OS Command Injection 취약점이 발생할 수 있는 것을 확인합니다.

공격자는 해당 취약점을 이용하여 telnetd를 실행시키고 telnet에 연결하여 카메라가 연결되어 있는 Wi-Fi의 SSID와 비밀번호를 얻어 내부망으로 침투합니다.

▶️ 대응 방안
CGI 개발 과정에서 웹 페이지나 사용자 어플리케이션의 데이터를 받아서 처리하는 부분의 함수에서 발생하는 취약점은 보안에 크게 위협이 될 수 있습니다. 따라서 개발 단계에서는 시큐어 코딩을 적용하여야 하며, 길이 검증이나 값 검증 등을 통해 보안을 강화해야 합니다.
3. 가로등 신호 조작
사용자가 OPC UA 서버에서 익명 사용자에 대한 권한을 허용하고 읽기 및 쓰기 권한을 모두 부여하는 경우, OPC UA 서버와 같은 네트워크에 연결된 모든 사용자는 OPC UA를 통해 읽고 쓰는 데이터를 모두 열람할 수 있게 됩니다.

공격자는 Wireshark와 같은 도구를 사용하여 네트워크 트래픽을 감시하고, 이를 통해 OPC UA 서버의 IP 주소를 획득할 수 있습니다.

UaExpert 도구를 이용하여 공격자는 가로등 신호를 담당하는 P200의 데이터를 수정할 수 있으며, 그 중 가로등을 켜고 끄는 데에 관여하는 유일한 true 데이터인 34번째 값을 조작함으로써 가로등의 LED를 조작할 수 있습니다.


▶️ 대응 방안
OPC UA 서버를 설정할 때는 인증된 사용자만 해당 데이터를 조작할 수 있도록 해야 하며, 익명의 사용자의 권한은 제거해야 합니다. 계정 공유의 어려움이 있다면 익명의 사용자의 권한을 해제하여 필요한 권한만을 부여하여 쓰기 동작과 같은 주요 동작은 불가능하도록 만들어야 합니다.
4. 신호등 시간 변경
가로등에 접근한 OPC UA 데이터를 기반으로, D200의 데이터 중 Array[3]의 정보가 3, 1, 4임을 확인할 수 있었는데, 이는 현재 스마트 시티의 신호등 시간과 일치했습니다.
이에 공격자는 스마트 시티에서 널리 사용되는 MQTT가 동작 중인지 확인하기 위해 MQTT Explorer를 사용하여 MQTT 데이터를 확인했고, 그 중 change_time의 LW300 데이터에 신호등과 같은 데이터의 특정 숫자가 전달되는 것을 확인했습니다.

공격자는 마지막 4번째의 값을 검증 숫자로 예상하고 무차별 대입 공격을 진행하게 됩니다.

공격이 성공하여 신호등의 시간이 1, 1, 1로 바뀐 것을 확인할 수 있습니다.

▶️ 대응 방안
MQTT 데이터가 암호화 통신이 적용되지 않아 인증되지 않은 사용자도 해당 데이터를 엿볼 수 있고, 이 데이터를 활용하여 일반 사용자도 정보를 발행하여 값을 변조할 수 있습니다. 따라서 초기 MQTT 설정 시 SSL 통신을 적용하여 같은 네트워크에 있는 사용자들이 임의로 데이터를 확인하거나 같은 TOPIC의 정보를 발행하거나 구독하지 못하도록 설정해야 합니다.
5. 신호등 관제 시스템 조작
공격자는 HMI에 표시된 화면의 정보와 MQTT의 read_plc의 D100 정보가 일치하는 것을 확인할 수 있습니다. 이를 기반으로 Replay Attack을 실행하여 HMI에 표시되는 데이터를 변조할 수 있습니다.
일반적으로 HMI에서 데이터를 수신하는 기준은 타임스탬프(ts)를 기준으로 합니다. 따라서 공격자가 HMI의 현재 시간보다 뒤로 타임스탬프를 설정하면, HMI는 가장 최신의 데이터만을 수신하게 되어 공격자가 강제로 데이터를 발행하여 관제 시스템을 방해할 수 있습니다.

공격자가 임의의 값을 발행하면서 실제 신호등 시간과 상관 없는 값이 화면에 표시되게 되며 HMI를 통해 신호등의 상태를 관제하는 곳에 혼란을 야기시킬 수 있습니다.

▶️ 대응 방안
앞서 언급한 신호등 시간 변경과 같이 SSL 통신을 통해 데이터의 암호화 통신을 적용해야 합니다. 또한, 임의의 사용자가 발행하거나 구독하는 것을 방지하기 위해 인증 과정을 추가해야 합니다.
6. 빌딩 관리 시스템 LED 제어
공격자는 내부망 네트워크에서 여러 IP의 포트 스캔을 진행하면서 BACnet이 열린 장비를 확인합니다. 빌딩 관리 시스템에서 많이 사용되는 BACnet의 포트는 47808을 사용하며 공격자 는 이를 확인하기 위해 네트워크 스니핑을 진행합니다.

스니핑 된 데이터를 확인하여 BACnet의 특정 값이 빌딩의 LED를 조작할 수 있다는 것을 파악하게 되면 공격자의 Replay Attack으로 빌딩 관리 시스템을 제어할 수 있습니다.

Replay Attack을 통해 BACnet 서버에 LED 제어가 되는 것을 확인할 수 있습니다.

▶️ 대응 방안
BACnet 데이터를 암호화하여 안전하게 전송해야 합니다. 또한, 데이터를 송수신하는 사용자를 인증하는 부분이 필요합니다. 기존 포트를 그대로 사용하면 공격자가 해당 포트에 대한 사용 프로세스를 유추할 수 있으므로 BACnet을 사용할 때에는 임의의 포트로 설정하여 사용하는 것이 바람직합니다.
마치며
스마트 시티 보안은 현재 급부상 중인 중요한 이슈로, 개인정보 보호와 네트워크 보안에 특별한 주의가 필요합니다. 스마트 시티와 같은 독립망의 경우, 외부에서 강제로 접근할 수 있는 공격 지점이 존재하지 않으면 공격자가 스마트 시티 내에 침입하여 공격할 수 없으므로 End Point 장비의 보안이 중요합니다. 내부망 내에서 네트워크 트래픽의 Replay Attack이나 무차별 대입 공격을 진행하기 위해서는 공격자는 내부망에 접근할 수 있는 지점이 필요하므로 스마트 시티나 스마트 팩토리 등의 시스템을 제작할 때 외부에서의 접근 지점을 최소화하는 것이 바람직합니다.
