[Zero-day] 초기 분석

goldenGlow_21·2025년 3월 19일

파일 시스템 분석 - Binwalk

binwalk -e dcs932lb1_v200_b6.bin

  • cpio 파일 시스템 확인
  • WiFi 공유기에 비해 파일/디렉토리의 양이 다소 적은 모습

디렉토리 파악

  • 실행 바이너리 (/bin, /sbin, /usr/bin, /usr/sbin)
    - 시스템에서 실행되는 주요 프로그램들

  • 설정 파일 (/etc, /etc_ro)
    - 환경설정, 네트워크 설정, 사용자 계정 정보 저장

  • 웹 인터페이스 관련 파일 (/etc_ro/web, /etc_ro/web/cgi)
    - 관리자 페이지, CGI 스크립트 확인 가능

  • 라이브러리 (/lib)
    - 암호화 및 네트워크 관련 라이브러리 포함

  • 네트워크 설정 (/etc_ro/Wireless, /etc_ro/ppp)
    - 무선 및 유선 네트워크 설정 포함

Busybox 분석

busybox

┌──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ file /bin/busybox
/bin/busybox: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=dc600ffc2f24a419c478c1918cb642ed8f4541e8, for GNU/Linux 3.2.0, stripped
  • 아키텍처: ELF 64-bit LSB pie executable, x86-64
    - 보통 임베디드 장치는 MIPS 또는 ARM 기반이 많은데, 이 경우는 x86-64로 빌드됨
    - 실기기에서 실행되는 환경이 다를 가능성?

링크 탐색

┌──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ readelf -a /bin/busybox | grep "NEEDED"
 0x0000000000000001 (NEEDED)             Shared library: [libresolv.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
  • 동적 링크: libresolv.so.2, libc.so.6
    - DNS 해석 관련 라이브러리(libresolv.so.2)를 사용
    - 일반적인 C 라이브러리(libc.so.6)도 포함

활성 명령어 목록 확인

┌──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ strings /bin/busybox | grep -i busybox
busybox
BusyBox is copyrighted by many authors between 1998-2015.
Usage: busybox [function [arguments]...]
   or: busybox --list[-full]
   or: busybox --install [-s] [DIR]
        BusyBox is a multi-call binary that combines many common Unix
        link to busybox for each function they wish to use and BusyBox
crond (busybox 1.37.0) started, log level %d
SERVER_SOFTWARE=busybox httpd/1.37.0
syslogd started: BusyBox v1.37.0
tar (busybox) 1.37.0
/etc/busybox.conf
BusyBox v1.37.0 (Debian 1:1.37.0-4)
┌──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ busybox --list
[
[[
acpid
adjtimex
ar
arch
arp
arping
ascii
ash
awk
base64
basename
bc
blkdiscard
blkid
blockdev
brctl
bunzip2
bzcat
bzip2
...

주요 명령어 정리

  • 기본 유닉스 명령어: ls, cp, mv, rm, chmod, chown, ln
  • 네트워크 유틸리티: ifconfig, ping, netstat, nc, telnet, wget
  • 프로세스 관리: ps, kill, top
  • 아카이브 및 압축: tar, gzip, bzip2, lzma
  • 스크립트 지원: ash (BusyBox에서 제공하는 쉘)
  • HTTP 서버: httpd
  • 로그 관리: syslogd, logread
  • 암호 관련: passwd, su
  • 크론 작업: crond, crontab

네트워크 기반 동작이 다수일 듯? -> 공격 벡터를 네트워크 측면으로 우선 설정

보안 취약점 예상해보기

  • httpd (내장 웹 서버) 및 wget이 포함되어 있음

    • 웹 인터페이스를 통한 명령 실행이 가능할 가능성
    • 미인가 사용자 접근 위험
    • 명령어 주입 취약점이 존재할 가능성
  • telnet, nc, ifconfig 등이 포함됨

    • telnet이 활성화되어 있다면 평문으로 패스워드가 전송 - 크레덴셜 유출 위험
      - 혹시 상시로 열려 있는지도 확인해보기
    • nc(Netcat)가 존재하면, 리버스 쉘을 생성할 수 있음
  • passwdsu 명령어가 포함됨
    - BusyBox를 통해 비밀번호 변경 가능 - 기본 계정 정보 노출 시 공격자가 root 권한 확보 가능

쉘 / 권한 관련 탐색

쉘 순서?

┌──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb  4 08:14 /bin/sh -> dash
  • /bin/shdash를 가리키고 있음
    - busybox 기반의 ash가 기본 셸이 아니라는 점에서, 내부에서 추가적인 셸 프로세스 (dash?)가 실행될 가능성 존재

SUID 설정 여부 검사

──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ find / -perm -4000 -exec ls -l {} \;
find: ‘/lost+found’: Permission denied
find: ‘/var/spool/cron/crontabs’: Permission denied
find: ‘/var/tmp/systemd-private-69fe27d112534e1d9733d8d1119de3a2-systemd-logind.service-fCEeVB’: Permission denied
...
find: ‘/tmp/systemd-private-69fe27d112534e1d9733d8d1119de3a2-upower.service-hiEXZ1’: Permission denied
find: ‘/tmp/systemd-private-69fe27d112534e1d9733d8d1119de3a2-colord.service-N6r8Yu’: Permission denied
-rwsr-xr-x 1 root root 146480 Feb  5 10:35 /usr/sbin/mount.nfs
-rwsr-xr-- 1 root dip 428424 Nov 22 10:27 /usr/sbin/pppd
-rwsr-xr-x 1 root root 56320 Dec 26 03:36 /usr/sbin/mount.cifs
-rwsr-xr-x 1 root root 18816 Jan 27 18:36 /usr/bin/newgrp
-rwsr-xr-- 1 root kismet 150312 Sep 12 00:50 /usr/bin/kismet_cap_nrf_52840
-rwsr-xr-x 1 root root 35200 Jan 27 18:36 /usr/bin/umount
-rwsr-xr-x 1 root root 306456 Jan 16 05:19 /usr/bin/sudo
-rwsr-xr-- 1 root kismet 154408 Sep 12 00:50 /usr/bin/kismet_cap_nxp_kw41z
-rwsr-xr-x 1 root root 80264 Jan 27 18:36 /usr/bin/su
-rwsr-xr-- 1 root kismet 154408 Sep 12 00:50 /usr/bin/kismet_cap_rz_killerbee
-rwsr-xr-- 1 root kismet 154408 Sep 12 00:50 /usr/bin/kismet_cap_ti_cc_2540
-rwsr-xr-x 1 root root 166848 Oct  5 03:45 /usr/bin/ntfs-3g
-rwsr-xr-- 1 root kismet 150312 Sep 12 00:50 /usr/bin/kismet_cap_nrf_51822
-rwsr-xr-- 1 root kismet 228680 Sep 12 00:50 /usr/bin/kismet_cap_linux_wifi
-rwsr-xr-x 1 root root 35128 Sep 21 08:06 /usr/bin/fusermount3
-rwsr-xr-x 1 root root 63880 Jan 27 18:36 /usr/bin/mount
-rwsr-xr-- 1 root kismet 277288 Sep 12 00:50 /usr/bin/kismet_cap_hak5_wifi_coconut
-rwsr-xr-x 1 root root 52936 Dec  6 07:51 /usr/bin/chsh
-rwsr-xr-x 1 root root 18680 Jul  2  2024 /usr/bin/rsh-redone-rsh
-rwsr-xr-x 1 root root 70888 Dec  6 07:51 /usr/bin/chfn
-rwsr-xr-- 1 root kismet 150312 Sep 12 00:50 /usr/bin/kismet_cap_ubertooth_one
-rwsr-xr-x 1 root root 30952 Sep 19 04:47 /usr/bin/pkexec
-rwsr-xr-x 1 root root 18680 Jul  2  2024 /usr/bin/rsh-redone-rlogin
-rwsr-xr-x 1 root root 14848 Jan  7 05:42 /usr/bin/vmware-user-suid-wrapper
-rwsr-xr-x 1 root root 118168 Dec  6 07:51 /usr/bin/passwd
-rwsr-xr-- 1 root kismet 154408 Sep 12 00:50 /usr/bin/kismet_cap_nrf_mousejack
-rwsr-xr-- 1 root kismet 158504 Sep 12 00:50 /usr/bin/kismet_cap_linux_bluetooth
-rwsr-xr-- 1 root kismet 154408 Sep 12 00:50 /usr/bin/kismet_cap_ti_cc_2531
-rwsr-xr-x 1 root root 88568 Dec  6 07:51 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 18744 Sep 19 04:47 /usr/lib/polkit-1/polkit-agent-helper-1
find: ‘/usr/lib/mysql/plugin/auth_pam_tool_dir’: Permission denied
-rwsr-xr-x 1 root root 494144 Oct 27 09:58 /usr/lib/openssh/ssh-keysign
-rwsr-xr-- 1 root messagebus 51272 Dec 16 09:26 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-sr-x 1 root root 14672 Dec 20 01:54 /usr/lib/xorg/Xorg.wrap
-rwsr-xr-x 1 root root 15568 Jan 28 20:26 /usr/lib/chromium/chrome-sandbox
find: ‘/root’: Permission denied
-r-sr-x--- 1 kali kali 116911 Feb  2 02:28 /home/kali/Desktop/Firmware/DIR-882/104/_8AB758.extracted/cpio-root/usr/lib/pppd/2.4.5/pptp.so
-r-sr-x--- 1 kali kali 116851 Feb  3 01:27 /home/kali/Desktop/Firmware/DIR-882/130/_DIR882A1_FW130B06_decrypted.bin.extracted/_A0.extracted/_8897DC.extracted/cpio-root/usr/lib/pppd/2.4.5/pptp.so
find: ‘/sys/kernel/tracing’: Permission denied
find: ‘/sys/kernel/debug’: Permission denied
find: ‘/sys/fs/pstore’: Permission denied
...
  • mount.nfs, pppd, mount.cifs, su, sudo 등 다수의 실행 파일이 SUID 설정

특이점?

  • su(Switch User) 명령어가 SUID로 설정되어 있다면, 일반 사용자도 root 권한을 얻을 가능성
  • pppd(PPP Daemon)가 SUID로 실행되는 경우, 권한 상승 공격(Privilege Escalation)이 가능할 가능성

웹 서버 관련 cgi 스크립트 탐색

목록 확인

┌──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ ls -l ./etc_ro/web/cgi/

total 104
-rw-r--r-- 1 kali kali  64 Feb 15 20:10 audiocfg.cgi
-rw-r--r-- 1 kali kali  30 Feb 15 20:10 cgiversion.cgi
-rw-r--r-- 1 kali kali 393 Feb 15 20:10 common.cgi
-rw-r--r-- 1 kali kali 538 Feb 15 20:10 datetime.cgi
-rw-r--r-- 1 kali kali 780 Feb 15 20:10 daynight.cgi
-rw-r--r-- 1 kali kali  36 Feb 15 20:10 dbglevel.cgi
-rw-r--r-- 1 kali kali 714 Feb 15 20:10 email.cgi
-rw-r--r-- 1 kali kali  25 Feb 15 20:10 iactiveuser.cgi
-rw-r--r-- 1 kali kali 113 Feb 15 20:10 iaudio.cgi
-rw-r--r-- 1 kali kali 238 Feb 15 20:10 iimage.cgi
-rw-r--r-- 1 kali kali 366 Feb 15 20:10 image.cgi
-rw-r--r-- 1 kali kali 512 Feb 15 20:10 inetwork.cgi
-rw-r--r-- 1 kali kali 421 Feb 15 20:10 isysdevice.cgi
-rw-r--r-- 1 kali kali 318 Feb 15 20:10 isystem.cgi
-rw-r--r-- 1 kali kali 308 Feb 15 20:10 iwireless.cgi
-rw-r--r-- 1 kali kali 442 Feb 15 20:10 motion.cgi
-rw-r--r-- 1 kali kali 670 Feb 15 20:10 network.cgi
-rw-r--r-- 1 kali kali 354 Feb 15 20:10 sdbdetection.cgi
-rw-r--r-- 1 kali kali  21 Feb 15 20:10 sitesurvey.cgi
-rw-r--r-- 1 kali kali 264 Feb 15 20:10 strminfo.cgi
-rw-r--r-- 1 kali kali 204 Feb 15 20:10 system.cgi
-rw-r--r-- 1 kali kali 860 Feb 15 20:10 upload.cgi
-rw-r--r-- 1 kali kali  48 Feb 15 20:10 user.cgi
-rw-r--r-- 1 kali kali  19 Feb 15 20:10 userlist.cgi
-rw-r--r-- 1 kali kali  73 Feb 15 20:10 usermod.cgi
-rw-r--r-- 1 kali kali 492 Feb 15 20:10 wireless.cgi

주요 파일 및 그 기능 확인

  • network.cgi, inetwork.cgi - 네트워크 설정 관련
  • image.cgi, iimage.cgi - 카메라 영상 관련 설정
  • motion.cgi - 모션 감지 관련 설정
  • email.cgi - 이메일 설정 (SMTP, 인증 정보 포함)
  • user.cgi, userlist.cgi, usermod.cgi - 사용자 계정 관련 설정
  • upload.cgi - 파일 업로드 기능 포함 (보안상 위험할 가능성 높음!!)

각 cgi 스크립트 내용 확인(전체 출력)

┌──(kali㉿kali)-[~/…/_dcs932lb1_v200_b6.bin.extracted/_50040.extracted/_3B6000.extracted/cpio-root]
└─$ cat ./etc_ro/web/cgi/*.cgi
AudioEnable=%%AudioEnable();%%
AudioVolume=%%AudioVolume();%%
CGIVersion=%%CGIVersion();%%
model=%%ModelName();%%
brand=%%Company();%%
version=%%FirmwareVersion();%%
build=%%FirmwareVersion(2);%%
name=%%CameraName();%%
location=%%Location();%%
macaddr=%%MACAddress(2);%%
ipaddr=%%CurrentIPAddress();%%
netmask=%%CurrentSubnetMask();%%
gateway=%%CurrentDefaultGateway();%%
wireless=%%WirelessSupport();%%
ptz=%%PTZSupport();%%
inputs=0
outputs=0
speaker=no
videoout=no
DateTimeMode=%%DateTimeMode();%%
TimeServerIPAddress=%%TimeServerIPAddress();%%
TimeServerProtocol=%%TimeServerProtocol();%%
TimeZone=%%TimeZone();%%
TimeZoneIndex=%%TimeZoneIndex();%%
Date=%%Date();%%
Time=%%Time();%%
DSTEnable=%%DSTEnable();%%
DSTOffset=%%DSTOffset();%%
DSTStartMonth=%%DSTStartMonth();%%
DSTStartWeek=%%DSTStartWeek();%%
DSTStartDay=%%DSTStartDay();%%
DSTStartTime=%%DSTStartTime();%%
DSTEndMonth=%%DSTEndMonth();%%
DSTEndWeek=%%DSTEndWeek();%%
DSTEndDay=%%DSTEndDay();%%
DSTEndTime=%%DSTEndTime();%%
DayNightMode=%%DayNightMode();%%
LightSensorControl=%%LightSensorControl();%%
IRLedScheduleSunStart=%%IRLedScheduleSunStart();%%
IRLedScheduleSunEnd=%%IRLedScheduleSunEnd();%%
IRLedScheduleMonStart=%%IRLedScheduleMonStart();%%
IRLedScheduleMonEnd=%%IRLedScheduleMonEnd();%%
IRLedScheduleTueStart=%%IRLedScheduleTueStart();%%
IRLedScheduleTueEnd=%%IRLedScheduleTueEnd();%%
IRLedScheduleWedStart=%%IRLedScheduleWedStart();%%
IRLedScheduleWedEnd=%%IRLedScheduleWedEnd();%%
IRLedScheduleThuStart=%%IRLedScheduleThuStart();%%
IRLedScheduleThuEnd=%%IRLedScheduleThuEnd();%%
IRLedScheduleFriStart=%%IRLedScheduleFriStart();%%
IRLedScheduleFriEnd=%%IRLedScheduleFriEnd();%%
IRLedScheduleSatStart=%%IRLedScheduleSatStart();%%
IRLedScheduleSatEnd=%%IRLedScheduleSatEnd();%%
WebDebugLevel=%%WebDebugLevel();%%
EmailSMTPServerAddress=%%EmailSMTPServerAddress();%%
EmailSMTPPortNumber=%%EmailSMTPPortNumber();%%
EmailSenderAddress=%%EmailSenderAddress();%%
EmailReceiverAddress=%%EmailReceiverAddress();%%
EmailUserName=%%EmailUserName();%%
EmailPassword=%%EmailPassword();%%
EmailTLSAuthentication=%%EmailTLSAuthentication();%%
EmailScheduleEnable=%%EmailScheduleEnable();%%
EmailScheduleMode=%%EmailScheduleMode();%%
EmailScheduleDay=%%EmailScheduleDay();%%
EmailScheduleTimeStart=%%EmailScheduleTimeStart();%%
EmailScheduleTimeStop=%%EmailScheduleTimeStop();%%
EmailScheduleInterval=%%EmailScheduleInterval();%%
EmailMotionMode=%%EmailMotionMode();%%
EmailMotionFrameInterval=%%EmailMotionFrameInterval();%%
%%ActiveUserTable(1);%%
Audio=%%AudioEnable();%%
Volume=%%AudioVolume();%%
Codec=%%AudioCodec();%%
SampleRate=%%AudioSampleRate();%%
VideoResolution=%%StringOfVideoResolution();%%
CompressionRate=%%StringOfCompressionRate();%%
FrameRate=%%StringOfFrameRate();%%
ViewMode=%%ViewMode();%%
FrameSize=%%FrameSize();%% Bytes
LightFrequency=%%StringOfLightFrequency();%%
VideoResolution=%%VideoResolution();%%
CompressionRate=%%CompressionRate();%%
FrameRate=%%FrameRate();%%
ViewMode=%%ViewMode();%%
BrightnessControl=%%BrightnessControl();%%
ContrastControl=%%ContrastControl();%%
SaturationControl=%%SaturationControl();%%
LightFrequency=%%LightFrequency();%%
Mirror=%%Mirror();%%
AntiFlickerEnable=%%AntiFlickerEnable();%%
IPAddress=%%CurrentIPAddress();%%
SubnetMask=%%CurrentSubnetMask();%%
DefaultGateway=%%CurrentDefaultGateway();%%
PrimaryDNSAddress=%%DNSIPAddress1();%%
SecondaryDNSAddress=%%DNSIPAddress2();%%
DynamicDNS=%%StatusOfDynamicDNS();%%
SecondaryHTTPPort=%%StringOfSecondHTTPPortEnable();%% (Port : %%SecondHTTPPort();%%)
UPnP=%%StringOfUPnPEnable();%% (IP : %%GotIPFromUpnp();%%)
UPnPPortForwarding=%%StatusOfUPnPPortForwarding();%%
BonjourEnable=%%StringOfBonjourEnable();%%
BonjourName=%%BonjourName();%% Model=%%ModelName();%%
ModelDesc=%%ModelDescription();%%
FirmwareVersion=%%FirmwareVersion();%% (%%ReleaseDate();%%)
HarwareVersion=%%HarwareVersion();%%
ROMVersion=%%ROMVersion();%%
Company=%%Company();%%
CompanyURL=%%CompanyURL();%%

MACAddress=%%MACAddress();%%
IPAddress=%%CurrentIPAddress();%%
EthernetLink=%%EthernetLink();%%
EthernetSpeed=%%EthernetSpeed();%% bps
EthernetDuplex=%%EthernetDuplex();%%
CameraName=%%CameraName();%%
Location=%%Location();%%
Model=%%ModelName();%%
FirmwareVersion=%%FirmwareVersion();%% (%%ReleaseDate();%%)
MACAddress=%%MACAddress();%%
IPAddress=%%CurrentIPAddress();%%
EthernetLink=%%EthernetLink();%%
EthernetSpeed=%%EthernetSpeed();%% bps
EthernetDuplex=%%EthernetDuplex();%%
ConnectionMode=%%StringOfConnectionMode();%%
WirelessLink=%%WirelessLink();%%
SSID=%%WirelessCurrentSSID();%% (MAC : %%WirelessCurrentAPMACAddress();%%)
WirelessChannel=%%WirelessCurrentChannel();%%
TransmissionRate=%%WirelessCurrentTransmissionRate();%%
WEPEncryption=%%WirelessCurrentEncryption();%%
MotionDetectionEnable=%%MotionDetectionEnable();%%
MotionDetectionBlockSet=%%MotionDetectionBlockSet();%%
MotionDetectionSensitivity=%%MotionDetectionSensitivity();%%
MotionDetectionScheduleMode=%%MotionDetectionScheduleMode();%%
MotionDetectionScheduleDay=%%MotionDetectionScheduleDay();%%
MotionDetectionScheduleTimeStart=%%MotionDetectionScheduleTimeStart();%%
MotionDetectionScheduleTimeStop=%%MotionDetectionScheduleTimeStop();%%
IPAddressMode=%%IPAddressMode();%%
IPAddress=%%IPAddress();%%
SubnetMask=%%SubnetMask();%%
DefaultGateway=%%DefaultGateway();%%
PPPoEUserID=%%PPPoEUserID();%%
PPPoEPassword=%%PPPoEPassword();%%
DNSIPAddress1=%%DNSIPAddress1();%%
DNSIPAddress2=%%DNSIPAddress2();%%
DDNSEnable=%%DDNSEnable();%%
DDNSProvider=%%DDNSProvider();%%
DDNSHostName=%%DDNSHostName();%%
DDNSUserName=%%DDNSUserName();%%
DDNSPassword=%%DDNSPassword();%%
SecondHTTPPortEnable=%%SecondHTTPPortEnable();%%
SecondHTTPPort=%%SecondHTTPPort();%%
UPnPEnable=%%UPnPEnable();%%
UPnPPortForwarding=%%UPnPPortForwarding();%% 
BonjourEnable=%%BonjourEnable();%%
BonjourName=%%BonjourName();%% SoundDetectionEnable=%%SoundDetectionEnable();%%
SoundDetectionDB=%%SoundDetectionDB();%%
SoundDetectionScheduleMode=%%SoundDetectionScheduleMode();%%
SoundDetectionScheduleDay=%%SoundDetectionScheduleDay();%%
SoundDetectionScheduleTimeStart=%%SoundDetectionScheduleTimeStart();%%
SoundDetectionScheduleTimeStop=%%SoundDetectionScheduleTimeStop();%%%%SiteSurveyList();%%videos=MJPEG
resolutions=640x480,320x240,160x120
vprofilenum=1
vprofile1=MJPEG
vprofileurl1=/mjpeg.cgi
vprofileres1=%%StringOfVideoResolution();%%
vDprofileurl1=/dgvideo.cgi
aprofilenum=1
aprofile1=PCM
aprofileurl1=/audio.cgi
aDprofileurl1=/dgaudio.cgi
CameraName=%%CameraName();%%
Location=%%Location();%%
AdminID=%%AdminID();%%
AdminPassword=%%AdminPassword();%%
LEDControl=%%LEDControl();%%
SnapshotURLAuthentication=%%SnapshotURLAuthentication();%%FTPHostAddress=%%FTPHostAddress();%%
FTPPortNumber=%%FTPPortNumber();%%
FTPUserName=%%FTPUserName();%%
FTPPassword=%%FTPPassword();%%
FTPDirectoryPath=%%FTPDirectoryPath();%%
FTPPassiveMode=%%FTPPassiveMode();%%
FTPScheduleEnable=%%FTPScheduleEnable();%%
FTPScheduleMode=%%FTPScheduleMode();%%
FTPScheduleDay=%%FTPScheduleDay();%%
FTPScheduleTimeStart=%%FTPScheduleTimeStart();%%
FTPScheduleTimeStop=%%FTPScheduleTimeStop();%%
FTPScheduleVideoFrequencyMode=%%FTPScheduleVideoFrequencyMode();%%
FTPScheduleFramePerSecond=%%FTPScheduleFramePerSecond();%%
FTPScheduleSecondPerFrame=%%FTPScheduleSecondPerFrame();%%
FTPScheduleBaseFileName=%%FTPScheduleBaseFileName();%%
FTPScheduleFileMode=%%FTPScheduleFileMode();%%
FTPScheduleMaxFileSequenceNumber=%%FTPScheduleMaxFileSequenceNumber();%%
FTPCreateFolderInterval=%%FTPCreateFolderInterval();%%
AccessControlEnable=%%AccessControlEnable();%%
%%UserTable(1);%%
name=%%ModName();%%
password=%%ModPassword();%%
group=%%ModGroup();%%
WirelessDisable=%%WirelessDisable();%%
ConnectionMode=%%ConnectionMode();%%
SSID=%%SSID();%%
WirelessChannel=%%WirelessChannel();%%
TransmissionRate=%%StringOfTransmissionRate();%%
WEPEncryption=%%WEPEncryption();%%
WEPKeyFormat=%%WEPKeyFormat();%%
Key1=%%Key1();%%
Key2=%%Key2();%%
Key3=%%Key3();%%
Key4=%%Key4();%%
TxKey=%%TxKey();%%
BeaconInterval=%%BeaconInterval();%%
Preamble=%%Preamble();%%
AuthenticationType=%%AuthenticationType();%%
PreSharedKey=%%PreSharedKey();%%
  • %%Function();%% 형태의 템플릿 변수를 다수 발견 가능
    - 카메라 펌웨어의 내부 처리 함수와 연결되며, 실제 값으로 치환될 가능성

보안 취약점 찍어보기

  • upload.cgi

    • 파일 업로드 기능이 포함되어 있음
    • 실행 권한이 있는 경우 임의의 파일 업로드 및 원격 코드 실행(RCE) 가능성 존재
    • 파일 확장자 필터링이 없다면, 웹 셸 업로드 공격 가능
  • user.cgi, usermod.cgi

    • AdminID=%%AdminID();%%, AdminPassword=%%AdminPassword();%% 같은 변수 포함
    • 관리자 계정 ID와 비밀번호가 하드코딩되어 있을 가능성 있음
    • URL 파라미터를 조작하여 관리자 권한 탈취(Privilege Escalation) 가능성 존재
  • network.cgi, inetwork.cgi

    • IPAddress=%%IPAddress();%%, DNSIPAddress1=%%DNSIPAddress1();%%, PPPoEUserID=%%PPPoEUserID();%%
    • 네트워크 설정을 변경하는 기능 포함
    • 인증 없이 접근 가능하면, 임의의 네트워크 설정 변경 및 디도스 공격(DNS 변경, 게이트웨이 조작) 가능
  • email.cgi

    • EmailUserName=%%EmailUserName();%%, EmailPassword=%%EmailPassword();%%
    • SMTP 인증 정보가 저장됨
    • 공격자가 접근 가능하면, 이메일을 통한 스팸 공격 또는 계정 탈취 가능성
  • wireless.cgi

    • SSID=%%SSID();%%, PreSharedKey=%%PreSharedKey();%%
    • WiFi SSID 및 WPA 키 정보 포함
    • 인증 우회가 가능하면 무선 네트워크에 무단 접근 가능

주요 cgi 스크립트 개별 분석

upload.cgi

주요 사항

  • FTP 계정 정보 포함

    • FTPUserName=%%FTPUserName();%%
    • FTPPassword=%%FTPPassword();%%
    • 위 정보가 노출되면 FTP 서버에 무단 접근 가능
  • FTP 업로드 디렉터리 설정 가능

    • FTPDirectoryPath=%%FTPDirectoryPath();%%
    • 업로드 경로를 변경할 수 있다면 공격자가 원격에서 설정을 조작하여 시스템 내 특정 디렉터리에 악성 파일을 업로드할 가능성 존재
  • FTP 패시브 모드 지원

    • FTPPassiveMode=%%FTPPassiveMode();%%
    • 방화벽 우회가 가능하도록 FTP가 설정될 수 있음
  • FTP 스케줄링 기능 존재

    • FTPScheduleEnable=%%FTPScheduleEnable();%%
    • FTPScheduleTimeStart=%%FTPScheduleTimeStart();%%
    • 일정 시간에 자동 업로드 기능이 동작할 경우, 공격자가 이를 이용해 자동으로 파일을 업로드하고 실행할 가능성
profile
안드로이드는 리눅스의 꿈을 꾸는가

0개의 댓글