본문 바로가기

5. 방학 활동/보고서 분석

[2021.02.18] 4회차 - IoT 기기 모니터링 도구 구현

[KISA 연구보고서] "임베디드 리눅스 기반 IoT 기기 악성코드 분석 기술 연구"

 

제 3절 IoT 기기 모니터링 도구 구현

  1. IoT 기기 모니터링 함수별 분류

가. 데이터 수집

  1. getProcstats()
    첫 번째 필드: CPU Core 번호

    두 번째 필드: USER MODE에서의 실행 시간
    세 번째 필드: SYSTEM MODE에서의 실행 시간
    네 번째 필드: 낮은 권한의 USER MODE에서의 실행 시간
    다섯 번째 필드/여섯 번째 필드: I/O 완료 아닐때의 대기 시간과 완료 대기 시간으로 IDLE 테스크의 JIFFIES(system timer interrupt) 소모 값
    일곱 번째 필드/여덟 번째 필드: HARD INTERRUPT, SOFT INTERRUPT
    마지막 필드: ZERO(끝을 의미)

  2. getSysinfo()
    getSysinfo는 /proc/cpuinfo로 부터 물리 CPU 개수와 CPU 당 Core 개수, 전체 물리 Core 개수를 확인하고 CPU가 사용하는 프로세서의 클럭 속도와 각 CPU별 정책 한계 최소/최대 클럭 수를 확인하기 위하여 /sys/devices/system/cpu/cpu0/cpufreq를 사용한다.

  3. getIRQ()
    CPU 사용률을 특성을 사용하기 위하여 /proc/interrupts파일을 통해 시스템 interrupts를 발생횟수를 이용하여 각각의 CPU에 대한 사용률을 확인할 수 있다.

  4. getCoreTemp()
    디바이스의 CPU온도와 GPU온도를 확인하기 위하여 /sys/class/thermal/thermal_zone()/temp를 이용하여 실시간 온도를 측정할 수 있다.

  5. getDefaultInterface()
    network Interface 정보를 획득하여 사용 중인 network장치를 확인 및 정보를 획득하여 getNewwork() 함수에서 인터페이스 정보를 전달해주기 위해 사용한다.

  6. getNetwork()
    Network 사용량 정보인 TX/RX를 확인하기 위하여 /proc/net/dev 파일을 사용한다. Network Interface의 TX/RX정보를 통해 Network 사용량과 초 단위 패킷의 송수신량을 확인한다.

  7. getMemmory()
    현재 시스템의 메모리 정보를 획득하기 위하여 /proc/meminfo 파일을 통해 전체 메모리와 사용가능한 메모리양을 확인한다.

  8. getGQUMem()
    GPU메모리의 총 메모리양과 사용량을 확인하기 위해 vcgencmd()를 사용한다.
    get_mem reloc_total, get_mem reloc 명령어를 이용하여 relocation 메모리의 총 메모리양과 사용량을 확인한다.
    get_mem malloc_total, get mem malloc 명령어를 이용하여 malloc메모리의 총 메모리 양과 사용량을 확인한다.

  9. getDiskinfo()
    현재 디스크 파티션 정보를 획득하기 위하여 /proc/partitions/ 파일을 확인하고, 연결된 장치의 확인을 위해 /proc/mounts 파일의 마운트된 시간과 장치정보를 획득한다.

  10. Hardwareinfo()
    분석 디바이스의 사양 및 기본적인 모델 정보를 획득하기 위해서 디바이스의 메모리크기, 제조사, 프로시져, 기기의 모델명을 수집한다.

 

나. 데이터 가공

  1. setDataformat()

    추출한 하드웨어 정보의 효율적인 모니터링을 위한 특정 값 이상의 값이 발생 시 색상을 이용한 표시 및 데이터 셋 포맷의 지정을 위한 기능을 수행한다. 

 

다. 데이터 출력

  1. showStats()

    모니터링된 데이터는 악성코드의 하드웨어 특성을 추출하기 위한 상관관계 분석을 위하여 CSV 파일 포맷 형태의 저장 및 모니터링 출력을 수행한다. 아래 그림은 CSV 파일을 생성한 그림으로 분석을 통하여 특성을 데이터 정규화 과정틀 거쳐 추출한다. 

2. IoT Malware 분석 기반 가상환경 구성

초기 공격 환경은 공격자의 C&C서버 및 데이터베이스 서버가 있고, report 서버 및 loader 그리고 하나의 bot이 존재한다. bot은 C&C서버와 연결되어 있고, C&C서버로 부터 공격 명령을 받고 공격을 수행한다.

공격 외에도 취약한 디바이스를 찾아내고 얻은 정보를 report서버에 보낸다.


3. 공격 시나리오를 이용한 하드웨어 분석 연구
가. 시나리오 A - 최초 bot으로부터 Scanning 과정 하드웨어 분석
시나리오 A는 최초 botnet으로부터 내부 네트워크의 Scanning 과정에서의 모니터링을 진행한다. Scanning 과정은 최초의 bot이 C&C 서버로부터 명령을 받아 내부 네트워크를 정찰하고 취약한 디바이스를 찾아내고 해당 정보를 report 서버로 전송하게 된다.

나. 시나리오 B - scanning 과정 이후 loader에 의한 추가 감염 분석
시나리오 B는 scanning 과정 이후 report 서버가 loader에게 취약한 디바이스 정보를
loader에게 전달하게 되면 loader는 취약한 디바이스에 telnet 접속을 통하여 IoT
Malware를 다운받아 실행시킨 후 bot으로 감염을 시킨다.

다. 시나리오 C - C&C 서버의 공격 명령에 의한 공격 수행에 따른 하드웨어 분석
시나리오 C는 Scanning 과정 이후 loader로부터 Malware를 실행하게 되어 bot으로
감염된 디바이스에게 C&C 서버와의 통신을 통해 공격 명령을 전달한다.


4.
데이터 상관관계 분석을 통한 특성선정

 감염 이후 공격을 수행하는 디바이스 정보를 수집한 데이터 셋의 각 특성 간의 주성분 분석과 요인분석 방법을 통해 데이터의 상관관계를 분석하여 가장 높은 연관성과 데이터 분석시 가중치가 높은 특성을 선정하여 불필요한 데이터 특성을 제거하고 IoT Malware 의 탐지를 위한 최소한의 특성을 선정한다. 


5. 해당 기술의 활용 방안 연구

경량 IoT환경에서 사용 가능한 침입탐지 시스템에서의 IoT Malware탐지를 위한 최적의 특성을 선정하여 IoT 기기 특성에 따라 하드웨어 모니터링에 대한 악성코드 탐지를 할 수 있도록 연구했다.

무분별한 데이터 특성을 사용하여 발생하는 데이터 처리 과부하 문제를 해결하고 효과적인 악성코드 탐지를 할 수 있다.

또한 background에서 동작하는 악성코드의 경우 하드웨어 감염여부를 탐지하는데 어려움이 있으나 변화를 모니터링 하여 실시간 모니터링 할 수 있다.