**본 내용은 I.Sly() 방학스터디 활동내용과 같습니다**
(21.02.09)
제 1장 연구개요
-
제 1절 연구 배경 및 동향
최근 IoT 시대에 맞추어 다양한 디지털 기기들의 보급화, 대중화가 이루어지고 있다. 다양한 종류의 IoT기기들은 다양한 사이버 범죄에 악용되고 있고, 공격 수법 또한 갈수록 지능적이고 복합적으로 변하고 있다. 기존의 IoT Malware 탐지에 대한 다양한 연구는 대부분 웹 로그 분석/ 비전문적인 독립 연구원들의 인사이트에 의한 것으로 비과학적이다. IoT Malware는 범위가 넓을 경우 다른 유형의 Malware도 포함되고, 좁을 경우 단 하나 또는 몇 가지의 IoT의 IoT Malware 변종을 설명할 수 밖에 없다.
-
제 2절 과제의 필요성
IoT 기기가 발전함에 따라 IoT 기기 대상의 다양한 종류의 Malware가 생겨났다.
보안업계에서 인공지능을 활용한 기술에 대한 요구가 커지고 있는데, 인공지능을 활용한 정보 보안 연구는 기존의 전통적인 방식에서 탐지할 수 없었던 것을 탐지할 수 있기 때문이다.
24시간 동작하는 IoT 기기는 공격에 매우 취약하다. 따라서 IoT 기기가 연결되어 있는 내부 환경에서 IoT 기기 하드웨어 정보를 이용한 보안 위협 대응기술이 요구된다.
제 2장 기존 IoT 기기 악성코드 분석 기술
-
제 1절 IoT 기기 보안 기술 연구 동향 조사
IoT기기는 향후 사용이 기하급수적으로 증가할 것으로 예상된다.
하지만 IoT기기는 보안에취약하다. 바이러스나 Malware 방지 기능이 없어, 악의적인 코드를 전달하여 다른 장치들을 감염시키는 ‘봇’ 으로 사용 된다.
-
IoT 기기 보안 문제
-
IoT 기기의 환경적 제약: 임베디드 리눅스로 구동되는 IoT 기기의 환경적 제약이 있는데, 다양한 libc 버전 제공, 작은 용량의 메모리, 제한된 저장장치 용량, 비 x86 아키텍처, ELF 바이너리 지원, 24시간 네트워크에 접속하여 구동, MQTT, COAP, XMPP 등 프로토콜 사용이 대표적이다.
-
IoT 사이버 공격의 침입탐지 한계
인터넷의 보안 프로토콜은 리소스가 제한되지 않는 표준 장치에서 작동되도록 설계되었다. 하지만 IoT 기기는 제한된 리소스 장치, 프로토콜 스택 및 표준과 같은 환경적 제약을 가지기 때문에 기존 보안 프로토콜로 보안될 수 없다.
IoT기기 하드웨어 정보를 적용한 시스템이 필요하지만 기술의 발전에도 불구하고, 현재의 솔루션은 부적절 하다.
-
제 2절 임베디드 리눅스 대상 Malware 특성 분석
IoT Malware는 널리 퍼져 있으며 DDoS 트래픽의 주요 출처이다.
몇 개의 IoT 기기 대상 Malware를 분석하고 IoT Malware의 수명주기의 각 단계와 그
단계 내에서의 행동과 같은 유사점을 찾을 수 있었다.
-
IoT Malware를 이용한 봇넷의 구성요소
: 2개의 기본 구성 요소 + 4개의 추가 구성 요소로 구성된다.
-
명령에 대해 DDoS공격을 수행하는 봇 또는 에이전트 또는 최종 좀비 IoT장치
-
명령 및 제어 서버(C&C): 봇을 제어하는 데 사용
-
스캐너: 취약한 IoT장치를 스캔
-
리포트 서버: 결과를 수집하거나 리포트를 스캔하는 데에 사용
-
로더: 취약한 IoT 장치에 로그온하고 Malware를 다운로드 하도록 지시
-
Malware 배포 서버: IoT 장치에서 악성코드 바이너리가 저장되는 위치
-
기기 검색(Scanning)
: 잠재적을 취약한 호스트를 검색하는 것
: 일반적으로 23, 2323번 포트 사용
-
취약한 기기 대상 공격(Attack vulnerable hosts)
: 일반적으로 ‘텔넷 사전 공격’이 있다.
: 모든 IoT Malware 변종의 공통점은 리눅스 및 busybox를 실행하는 임베디드 장치를 대상으로 한다는 것이다.
-
Malware 감염(Infection)
취약한 장치를 발견한 Malware의 감염 시도
-
echo over Telnet
-
TFTP
-
HTTP download(wget)
-
DHT/uTP7
-
Malware를 이용한 공격(Abuse)
DDoS 공격과 같은 일반적인 공격에서 사용되는데, 매우 강력한 대규모의 DDoS 공격을 수행 가능하다.
(21.02.11)
크립토재킹(CryptoJacking)
크립토재킹의 개념은 개인기기를 해킹해서 가상화폐 채굴에 악용하는 악성코드이며, 가상화폐와 함께 이슈가 되고 있는 악성코드이다. 대부분 가상화폐의 경우, 암호화된 문자열을 제시한다. 가장 먼저 해독한 사용자에게 가상화폐를 제공한다. 아래의 프로세스는 비트코인의 채굴 과정을 정리한 것이다.
<비트코인의 채굴 과정 정리>
-
“8a3a41b85b8b29ad444def299fee21793cd8b9e567eab02cd81” 암호값이 주어진다.
-
채굴자는 ‘무작위 대입법’ 으로 암호화 값을 해독한다.
-
해독 대가로 채굴자는 비트코인을 얻는다.
가. 크립토재킹 원리
-
공격자는 악성코드를 시스템의 취약점을 통해 침투한 후 실행 및 유포한다.
-
서버 침투에 성공하면, C&C 서버로부터 채굴 악성코드를 전송 받는다.
IoT 장비의 경우, 기존 Malware 방법인 scanning과정을 통해 기기 접속 -> 코드삽입-> 감염이 이루어지기 때문에 네트워크 정보만을 이용해 탐지하기엔 어려움이 있다.
나. 공격 경로
-
“워터링 홀” 수법: 워터링 홀은 사이트에 악성코드를 심어서 방문자를 감염시키는 방법이다. 크립토재킹의 성공 여부는 감염 사용자 수에 달려있는데, 채굴 기기가 많아질수록 가상화폐 획득 성공률이 올라가기 때문이다.
-
“악성 이메일” 이용: 문서 형태로 실행파일을 속여서 크립토재킹 설치파일을 유포한다. 사용자가 파일을 다운로드 후 실행하면, 크립토재킹이 기기에 몰래 설치된다. SMB(Server Messaging Block)을 이용해서 유포할 수도 있는데, SMB는 파일과 같은 공유를 목적으로 만들어진 프로토콜이다.
다. 감염증상
-
크립토재킹은 네트워크로 연결된 경우가 많다. 그래서 해커가 크립토재킹 악성코드를 경로로 추가적으로 악성코드를 심을 수 있다.
-
크립토재킹은 스캐닝 정보를 통해 IoT장비에 접속 후 코드 삽입을 통해 감염 시킨다.
-
기기를 원격으로 조종하고 재부팅을 해도 자동으로 실행되도록 레지스트리를 추가하여 기기를 사용한다.
-
감염 되었을 경우 백그라운드에서 실행되는 가상화폐 채굴 악성코드를 통하여 변동되는 CPU 증상되는 현상을 확인 할 수 있다.
-
크립토재킹에 감염되었을 때, 악성 사이트 접속을 차단하고 운영체제 업데이트 방법 등의 대처방안이 나와있다.
-
IoT장비의 경우 사용자가 감염 여부를 감지하기는 어렵다. 기존 네트워크 정보를 기반으로 한 침입탐지 방법은 하드웨어의 변화를 감지하지 못한다.
(21.02.16)
제 4절 악성코드 감염단계별 동작 정리
-
IoT 디바이스 대상 공통 공격 특성
디바이스를 감염시키는 단계는 총 6단계로 나눌 수 있다.
-
Connect 공격자는 C&C 서버를 이용하여 공격 대상 및 서버를 제어하며 SCAN, Loader 서버를 사용하여 공격을 진행한다.
-
Scan 서버는 IoT 디바이스를 검색하는데 사용된다. 이때 pw와 ID Port를 검색하게 되며, 알려진 취약한 정보를 수집한다.
-
IoT 기기로부터 수집된 정보는 C&C 서버로 전달되게 된다. C&C 서버는 기기의 정보를 저장한다.
-
C&C 서버는 Loader 서버를 이용하여 감염시킬 대상의 공격의 특성에 대한 공격을 지시한다.
-
공격 명령을 받은 Loader 서버는 bot에 Malware를 감염시킨다.
-
감염된 기기는 C&C 명령을 받아 공격을 실행한다.
-
IoT Malware 공격 과정 분석
가. botnet
botnet은 일반적인 공격 시나리오와 동일하게 진행된다. 감염된 기기는 주변 기기를 감염시킨다.
나. crytojacking
bot과 동일한 방법으로 공격이 진행되지만 기기 내부의 동작은 약간 다르다.
크립토재킹의 경우 감염된 이후 package를 설치한다. 이때 설치 방법은 URL을 이용하는 방법과 SSH를 이용한 방법으로 나뉜다. URL의 경우 Script기반으로 해당 초인을 마이닝 할 수 있게 환경을 구성한다. SSH의 경우 연산된 파일을 URL에 일정시간마다 전송한다.
-
SSH기반 : 하드웨어를 점령하는 공격이다. 감염 직후 CPU와 memory정보 사용량이 빠르게 증가한다.
-
Pooling기반 Mining 공격 : 이 경우 겸염되더라도 백그라운드에서 동작되며 하드웨어 CPU 사용량은 증가되지 않지만 Memory, 네트워크 사용량이 증가한다.
제 3장 IoT 기기 모니터링 기술 조사 및 분석
-
제 1절 IoT 기기 모니터링 기술 조사
-
RaspControl
: 웹 기반 성능 측정 시스템으로 웹 환경에서 라즈베리파이의 상태를 확인할 수 있다. (웹 서버 설치 필수)
-
Whatap
: RaspControl의 실시간 확인 불가능의 문제를 해결하기 위해 개발됨.
: 실시간으로 확인 가능하고, 알림 서비스를 제공
-
Grafana
: 시각화 도구의 한 종류로 시간에 따라 쌓여있는 데이터를 효과적으로 시각화할 수 있도록 해주는 오픈소스
-
Telegraf
: 시스템 모니터링 및 지표 수집 에이전트
-
단일 바이너리로 배포 가능
-
표준 StatsD프로토콜 지원
-
다양한 연동 기능 내장
-
시스템 모니터링 지원
-
reids
: Key-Value 캐쉬 & Store 소프트웨어
-
in memory 데이터베이스
-
Nosql 데이터베이스
-
NMON
: top보다 다양한 정보를 모니터링할 수 있도록 하는 시스템 명령어 기반의 도구
-
제 2절 임베디드 리눅스 busybox 분석
-
busybox CPU 명령어 분석
가. iostat (표 참고): 평균 CPU 부하와 디스크 I/O의 세부적인 내용을 확인할 수
있다.
나. top: 유닉스계열 시스템에서 프로세스 목록을 CPU 사용률이 높은 것부터
보여주는 명령어이다.
다. vmstat
시스템 작업, 하드웨어 및 시스템 정보를 확인하고, 메모리, 페이징
블록장치의 I/O, CPU 상태 등을 확인하는 명령어이다.
프로세스 메모리 시스템 CPU 사용률에 대한 모니터링이 가능하다.
-
htop
가. Htop 기능 : 프로세스 선택을 커서나 마우스를 통해, pstree와 top를 함께 사용가능
나. lscpu : cpu 아키텍처에 대한 정보 표시.
sysfs를 하고 /proc 디렉터리 /cpuinfo로 cpu 정보 수집
-
busybox Memory 명령어 분석
가. free : 리눅스 시스템의 여유, 사용 메모리양을 보여줌.
메모리에 대한 정보, 메모리와 swap에 대한 값의 총합 확인 가능
-
busybox Network 명령어 분석
가. arp : 시스템이 가지고 있는 arp 테이블을 확인하고 추가, 삭제하는 명령어
나. ifconfig : 리눅스에서 NIC설정에 관련된 정보를 확인 할 때 사용하는 명령어
다. netstat : 현재 시스템에 연결된 네트워크 상태, 라우팅 테이블, 인터페이스 상태 등을 볼 수 있고 2개의 영역으로 나누어져 있다.
-
busybox Disk 명령어 분석
가. du : disk usage의 약자로, 디렉터리와 파일의 용량을 출력
나. df : 파일 시스템의 디스크 사용량 체크에 필수적으로 사용
다. uptime : 서버관리자가 서버의 전체적인 부하율과 사용시간, 유저 수, 시스템 로드 등을 확인
라. uname : 현재 작동 중인 머신과 운영체제에 대한 정보 출력
-
/Proc 파일 시스템
가. /proc/meminfo
지금 사용하는 시스템의 메모리 정보를 출력한다. 전체 메모리는 커널이 사용할 수 있는 메모리 영역과 사용자가 사용할 수 있는 메모리 영역으로 나뉜다.
-
File-backed memory
file에서 읽어왔거나 앞으로 다시 file로 저장될 것들을 file-backed memory 영역으로 해서 메모리 관리자가 관리한다. -
Anonymous memory
메모리에 있으나 file에서 오지 않았으며, 앞으로도 file에 쓰여지지 않을 것들을 Anonymous memory로 해서 관리한다. -
swap
어떤 프로세스가 활성화 되었을 때 메모리가 부족하면 비활성화(Inactive)로 된 것을 보조 저장장치에 메모리의 데이터를 일부 저장해 놓고, 실행할 프로세스가 사용할 메모리 공간을 확보한 후 실행하다.
-
Dirty, writeback
프로세스가 실행 주에 데이터가 처리되어 바뀌었다면, Dirty라고 메타 데이터에 표시하낟. 보조 저장장치에 저장될 때 Writeback으로 바뀌어 저장 하는 과정을 따른다.
-
Shmem
여러 프로세스가 공유하는 메모리 영역을 Shmem, 프로세스가 여러 개 실행되었다면 실행 코드는 동일, 각각의 프로세스가 사용하는 데이터만 다르게 하면 메모리 절약할 수 있다.
-
KernelStack
커널에서 프로세스가 전환 등이 일어날 때 Stack에 현재 상태를 저장할 때 사용하는 메모리 영역이다.
-
PageTables
메모리는 MMU로 관리하며, 실제 물리 메모리와 가상 메모리간 주소 변환을 하여서 사용한다.
-
Vmalloc
가상 메모리를 사용해서 프로세스가 실행, 가상 메모리를 할당/비할당한다.
(21.02.18)
제 3절 IoT 기기 모니터링 도구 구현
-
IoT 기기 모니터링 함수별 분류
가. 데이터 수집
-
getProcstats()
첫 번째 필드: CPU Core 번호
두 번째 필드: USER MODE에서의 실행 시간
세 번째 필드: SYSTEM MODE에서의 실행 시간
네 번째 필드: 낮은 권한의 USER MODE에서의 실행 시간
다섯 번째 필드/여섯 번째 필드: I/O 완료 아닐때의 대기 시간과 완료 대기 시간으로 IDLE 테스크의 JIFFIES(system timer interrupt) 소모 값
일곱 번째 필드/여덟 번째 필드: HARD INTERRUPT, SOFT INTERRUPT
마지막 필드: ZERO(끝을 의미)
-
getSysinfo()
getSysinfo는 /proc/cpuinfo로 부터 물리 CPU 개수와 CPU 당 Core 개수, 전체 물리 Core 개수를 확인하고 CPU가 사용하는 프로세서의 클럭 속도와 각 CPU별 정책 한계 최소/최대 클럭 수를 확인하기 위하여 /sys/devices/system/cpu/cpu0/cpufreq를 사용한다.
-
getIRQ()
CPU 사용률을 특성을 사용하기 위하여 /proc/interrupts파일을 통해 시스템 interrupts를 발생횟수를 이용하여 각각의 CPU에 대한 사용률을 확인할 수 있다.
-
getCoreTemp()
디바이스의 CPU온도와 GPU온도를 확인하기 위하여 /sys/class/thermal/thermal_zone()/temp를 이용하여 실시간 온도를 측정할 수 있다.
-
getDefaultInterface()
network Interface 정보를 획득하여 사용 중인 network장치를 확인 및 정보를 획득하여 getNewwork() 함수에서 인터페이스 정보를 전달해주기 위해 사용한다.
-
getNetwork()
Network 사용량 정보인 TX/RX를 확인하기 위하여 /proc/net/dev 파일을 사용한다. Network Interface의 TX/RX정보를 통해 Network 사용량과 초 단위 패킷의 송수신량을 확인한다.
-
getMemmory()
현재 시스템의 메모리 정보를 획득하기 위하여 /proc/meminfo 파일을 통해 전체 메모리와 사용가능한 메모리양을 확인한다.
-
getGQUMem()
GPU메모리의 총 메모리양과 사용량을 확인하기 위해 vcgencmd()를 사용한다.
get_mem reloc_total, get_mem reloc 명령어를 이용하여 relocation 메모리의 총 메모리양과 사용량을 확인한다.
get_mem malloc_total, get mem malloc 명령어를 이용하여 malloc메모리의 총 메모리 양과 사용량을 확인한다.
-
getDiskinfo()
현재 디스크 파티션 정보를 획득하기 위하여 /proc/partitions/ 파일을 확인하고, 연결된 장치의 확인을 위해 /proc/mounts 파일의 마운트된 시간과 장치정보를 획득한다.
-
Hardwareinfo()
분석 디바이스의 사양 및 기본적인 모델 정보를 획득하기 위해서 디바이스의 메모리크기, 제조사, 프로시져, 기기의 모델명을 수집한다.
나. 데이터 가공
-
setDataformat()
추출한 하드웨어 정보의 효율적인 모니터링을 위한 특정 값 이상의 값이 발생 시 색상을 이용한 표시 및 데이터 셋 포맷의 지정을 위한 기능을 수행한다.
다. 데이터 출력
-
showStats()
모니터링된 데이터는 악성코드의 하드웨어 특성을 추출하기 위한 상관관계 분석을 위하여 CSV 파일 포맷 형태의 저장 및 모니터링 출력을 수행한다. 아래 그림은 CSV 파일을 생성한 그림으로 분석을 통하여 특성을 데이터 정규화 과정틀 거쳐 추출한다.
-
IoT Malware 분석 기반 가상환경 구성
초기 공격 환경은 공격자의 C&C서버 및 데이터베이스 서버가 있고, report 서버 및 loader 그리고 하나의 bot이 존재한다. bot은 C&C서버와 연결되어 있고, C&C서버로 부터 공격 명령을 받고 공격을 수행한다.
공격 외에도 취약한 디바이스를 찾아내고 얻은 정보를 report서버에 보낸다.
-
공격 시나리오를 이용한 하드웨어 분석 연구
가. 시나리오 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 서버와의 통신을 통해 공격 명령을 전달한다.
-
데이터 상관관계 분석을 통한 특성선정
감염 이후 공격을 수행하는 디바이스 정보를 수집한 데이터 셋의 각 특성 간의 주성분 분석과 요인분석 방법을 통해 데이터의 상관관계를 분석하여 가장 높은 연관성과 데이터 분석시 가중치가 높은 특성을 선정하여 불필요한 데이터 특성을 제거하고 IoT Malware 의 탐지를 위한 최소한의 특성을 선정한다.
-
해당 기술의 활용 방안 연구
경량 IoT환경에서 사용 가능한 침입탐지 시스템에서의 IoT Malware탐지를 위한 최적의 특성을 선정하여 IoT 기기 특성에 따라 하드웨어 모니터링에 대한 악성코드 탐지를 할 수 있도록 연구했다.
무분별한 데이터 특성을 사용하여 발생하는 데이터 처리 과부하 문제를 해결하고 효과적인 악성코드 탐지를 할 수 있다.
또한 background에서 동작하는 악성코드의 경우 하드웨어 감염여부를 탐지하는데 어려움이 있으나 변화를 모니터링 하여 실시간 모니터링 할 수 있다.
(21.02.20)
제 4장 실험 및 분석
제 1절 악성코드 특성 선정을 위한 실험 환경
1. IoT Malware 선정 및 공격 특성
: 각 공격에 따라서 환경에 대한 정리와 동작방식을 기준으로 분석 실시
: bot - DDoS 및 정보 전송을 위한 메모리, 네트워크 사용량의 변과
: cryptojacking - CPU, GPU 사용량이 높아짐
2. 데이터 가공 및 분석
가. 데이터 전처리
: 데이터 분포를 분석하고 데이터를 필터링 하는 과정을 거친다. 각각의 특성에
따라 범위가 다르기 때문에 특성을 분석하기 어렵다. 데이터를 일반화하기
위해 사이킬런의 proprocess의 Transform을 이용하여각각 다른 특성의 수치를
0~1사이의 값으로 만들어주고 특성에 대한 분포와 분석을 하였다. 다음 데이터
분포를 분석하고 이상치를 걸러내어 정규분포 형태로 가공했다.
제 2절 하드웨어 공통 상태 정보 분석
1. IoT 디바이스 공격 수집 환경
내부망에 C&C서버와 DNS, Loader서버를 구축한다. IoT기기로 부터 수집된
정보는 DB Server로 전송한다. 내부 망에서 1차적으로 수집된 정보는 추출 및
분석을 진행하고 옵션을 적용하여 특성을 추가 및 수정한다.
제 3절 특성공학을 이용한 데이터 분석
: 특성공학이란? raw data를 예측 모델의 문제들을 잘 표현해주는 특징들로 변환하는 기법, 모델 정확도를 향상시켜주는 역할을 한다.
-
데이터 관찰: 데이터의 형식과 데이터 단위 등을 결정하는 단계
-
데이터 전처리: 형식화(분석 목적에 맞는 적절한 파일 형식으로 변환 또는 저장), 정제(문제 해결에 도움이 되지 않는 데이터 제거), 샘플링(실험초기에 일부 데이터만 선택하여 모델링을 하는 단계)로 나누어진다.
-
데이터 변환단계: 스케일(데이터 전처리 후 데이터의 단위를 0~1사이의 값으로 치환), 분해(하나의 특징이 복잡한 여러 개념을 포함하는 경우 여러 개의 특징으로 분리하거나 선택적 추출이 필요할 때), 결합(특징 두 가지를 하나의 특징으로 결합하는 단계), 변환(특정 변수를 모델에 사용할 수 있는 데이터 형식으로 변환) 으로 나눠진다.
: 특징공학을 진할할 때에는 추출, 선택, 구현이 중요하다.
-
PCA : 개념의 단순성과 용이한 적용성에 의하여 현재까지 널리 이용된다. 데이터의 차원을 감소시키는 선형변환 기법으로 입력 데이터의 공분산에 의해 결정되는 정규직교기저를 이용하는 2차원 선형변환기법이다.
-
ICA: 데이터의 통계적 성질을 고려한 선형변환 기법, 다차원 방법이다. 고차원의 누적률이나 통계적 모먼트를 사용한다.
제 4절 데이터 특성 선정 및 분류 실험
1. 시나리오별 특성 목록 정리
데이터 분석을 통하여 정상 데이터의 분석과 각 공격의 특성에 대해서
분석하고 시계열 분석 및 분류를 통해 특성별 특징들과 변화량에 대해 분석하였다.
가. 상관관계 분석
하드웨어 특성 선정을 위해 수집한 데이터의 분포를 분석, 전처리를
진행하였다. 디바이스 상태정보의 변화를 확인하고 비교 분석을 진행하였다.
2. 통계 기반 데이터 특성 수치 분석
가. 감염 전 하드웨어 데이터 분석
데이터 분석 과정을 통해 감염되기 전 데이터 수치 분석을 한다.
(1) USER영역 CPU 사용량
감염되기 전 USER 영역의 경우 일정한 주기로 CPU 사용량이 증가하는 것을
확인할 수 있다.
(2) 시스템 메모리 사용량 측정
메모리 사용량은 평균 0.2 수준의 사용량을 유지하는 것을 볼 수 있으며, 업데
이트와 파일 전송 등에 의해 수치가 일정 시간마다 일시적으로 변화된다.
(3) 시스템 유휴상태
센싱 데이터를 일정 주기마다 전송할 경우 CPU 사용 및 메모리 사용량이 증가
한다.
(4) CPU에서 하드디스크 사용 대기시간
감염되기 전의 CPU 및 하드웨어를 사용하여 대기하는 시간은 없었고, 데이터
처리에 대한 부하가 발생하지 않았다.
(5) 인터럽트 요청 수
인터럽트의 비정상적인 변화는 공격의 시작을 의미할 수 있으며, 감염에 의해
주기가 변화될 경우 하드웨어 사용량이 크게 증가할 수 있다.
(6) CPU 총 사용량
CPU의 연산 증가는 전원 공급량 증가로 연결될 수 있으며, 전체값에서 CPU
연산의 값을 빼줄 경우 IDLE 값을 획득할 수 있다.
(7) Memory 사용량 변화
Malware 중 botnet과 Cryptojacking 모두 메모리 사용량이 변화했다.
또한 패턴을 유지하되 전체적인 사용량이 증감 되었다.
(8) 네트워크 사용량 분석
IoT 기기는 센서로부터 데이터를 지속적으로 수집하여 전송해주는 역할을 수행
한다. 센싱 데이터를 지속적으로 수행하며 발생하는 네트워크 사용량과 감염에
의한 네트워크 사용량 분석을 통해 변화를 확인할 수 있다.
나. Cryptojacking에 감염 후 하드웨어 데이터 변화 분석
유저 영역 CPU 변화량을 분석하면,
(1) SSH 기반 파일 전송 공격을 기반으로 한 Cryptojacking의 경우
사용패턴이 크게 변화하는 것을 알 수 있었다.
(2) SSH based Attack의 경우
대표적으로 linux_muldrop이 있으며, 감염되기 전 평균 값 0.2보다 약
2배정도의 사용량이 증가된 0.4정도의 평균 값을 나타낸다.
(3) mining 중심 공격의 경우
하드웨어의 직접적인 공격을 수행하기는 하지만 CPU의 사용량은 크게
증가하지 않고 사용하는 주기의 변화가 발생한다.
유저권한 그룹에서의 CPU사용량의 변화는 System CPU사용량과는
다르게 권한을 가진 CPU 사용량 및 패턴은 크게 변화되는 것을 알 수 있다.
SSH 기반 공격: CPU 변화가 심해졌다가 다시 평균치로 돌아옴
Linux muldrop: CPU 사용량이 급격하게 늘리게 되며 감염완료 시 계속
평균적인 수준 유지
mining: CPU 사용량이 크게 증가
메모량에 대해서는 두 개의 공격모두 사용량 폭이 크게 증가함을 볼 수
있으며, 일반 동작과정 때보다 2배정도의 시스템 메모리 사용량이 크게
증가함을 볼 수 있다. Cryprojacking에 대한 공격 중 SSH, mining기반의
공격으로 인해 메모리 사용량이 증가하는 것을 확인할 수 있다.
-
유휴상태
시스템의 유휴상태의 경우 감염시작되고 이뤄지는 동안에 하드웨어 사용량이 크게 늘어남 확인가능. 하드웨어 처리량이 심해지며 하드웨어의 부하가 심해지는 것을 확인가능.
-
CPU, 하드디스크 사용에 따른 대기시간
lowt의 경우: 사용 패턴에 대한 변화
mining pool: CPU, 하드디스크사용에 대한 대기시간의 변화가 거의 없었지만, 하드웨어를 직접적으로 한 공격의 경우 크게 증가. CPU와 하드디스크를 사용하는 빈수 증가 및 malware로 인해 연산량 및 처리량 증가로 인한 시간 증가 인한 증상
-
인터럽트 요청 수에 대한 공격에 대한 증상
사용패턴이 다양해지는 것을 볼 수 있다. IoT 기기의 경우 반복적인
데이터를 처리하는데 목적이 있기 때문에 사용량 또한 일정하게
변화되는데 감염이 이뤄졌을 경우 패턴이 변화됨을 알 수 있다.
-
감염으로 인한 유저 권한 그룹 CPU 사용량
mining 기반 공격의 CPU 사용량이 크게 증가했다.
사용량 변화의 원인은 mining 기반 공격은 공격대상의 하드웨어를
대상으로 공격이 진행되는 반면 pooling은 웹상에서 채굴이 진행되어
메모리 사용량이 높은 차이점을 볼 수 있다. -
메모리
pooling 기반의 사용량 변화의 폭이 가장 컸다.
이는 Crpytojacking 공격의 경우 하드웨어에서 직접 동작하는 공격일 경우 CPU 사용량과 메모리양이 크게 증가하고, pooling을 이용한 공격의 경우 Memory를 대상으로 한 변화가 심한 것을 파악할 수 있다. -
네트워크 사용량
감염이 이뤄지면 네트워크 사용량은 일반적인 사용량보다 약 3배정도 차이를 보인다.
이는 cryptojacking에 감염될 경우 일정한 주기별로 서버로 정보를 전송하고 보내는 데이터 파일 크기 또한 변경되기 때문이다.
다. Botnet 공격에 의한 하드웨어 특성
(1)CPU 사용량
mirai에 감염되었을 경우 평균 사용 정도 2배 증가하며, 사용영역 0.8배 증가하는 것을 볼 수 있다. 봇넷에 감염됨으로써 사용량과 사용되는 범위가 증가한다. 하지만 유저권한에 대한 CPU의 변화는 없었다.
(2)시스템 전체 메모리 사용량
일반적인 상황에서는 0.5~0.25정도를 유지하다가 감염이 되는 시점에서 0.4~0.8의 범위로 크게 증가하다가 다시 정상상태로 돌아온다. 공격명령 수행시 메모리 사용량이 크게 증감하는 것을 반복한다.
(3)시스템유휴 상태
시스템 유휴시간은 각 CPU마다 하나씩 실행되는 스레드로서 CPU의 잔여 프로세스 처리량을 나타내는 값이다. 즉 사용되지 않는 CPU이다.
감염되기 전 센싱 데이터를 처리하기 위해 처리를 제외하고는 적은양의 CPU를 사용한다. 하지만 Malware에 감염시 IDLE값이 증가한다.
감염이 진행된 이후 메모리 유휴 상태의 폭이 커진다.
(4)CPU의 전체 사용량 변화
Malware에 감염됨으로써 CPU 사용량은 8배정도 증가했다가 3배정도가 높아진 평균치를 유지하며 동작된다.
(5)메모리 사용량에 대한 상태변화
Malware에 감염될 경우 메모리를 거의 대부분 사용한다. 메모리 사용량의 변화가 심한 것이다.
(6)Malware에 감염되었을 때의 네트워크 사용량에 따른 변화
Malware에 감염될 경우 네트워크에서 데이터를 전송하는 TX값이 크게 증가했다가 다시 안정성을 회복한다.
감염 프로그램을 받는 과정에서 또한 크게 증가한다.
'해킹 동아리 I.Sly() > 방학 스터디 활동' 카테고리의 다른 글
[bandit] level 10 -> level 11 (0) | 2021.02.15 |
---|---|
[bandit] level 9 -> level 10 (0) | 2021.02.15 |
[bandit] level 8 -> level 9 (0) | 2021.02.11 |
[bandit] level 7 -> level 8 (0) | 2021.02.11 |
[bandit] level 6 -> level 7 (0) | 2021.02.10 |