개요
모의 침투 테스팅이나 웹 취약점 진단 시 취약점(RCE, Web Shell 등)을 통해 셸 권한을 획득하여 시스템까지 침투하는 경우가 종종 있다. 다만, 시스템 영역에 진입하더라도 진단자가 무엇을 해야 할지 모른다면 침투에 성공한 의미가 없다. 따라서, 진단자는 웹 영역 뿐만 아니라 시스템 침투 시를 대비한 정보 수집 방법에 관한 기본 지식은 숙지하고 있어야 한다. 이번 포스팅은 시스템 침투 시 활용할 수 있는 자동화 스크립트를 소개하고 또, 수동으로 시스템에 대한 정보를 수집하는 방법에 관하여 기술하고자 한다.
정보 수집 자동화 스크립트
위 스크립트를 통해 수집할 수 있는 정보는 아래와 같다.
- 커널 및 릴리스 세부 정보
- 시스템 정보
- 사용자 정보
- 접근 권한 정보
- 시스템 환경 설정 정보
- 스케쥴링
- 네트워크 및 서비스 정보
- 설치되어 있는 서비스 버전 정보
- 사용자 SSH 등 개인 키 정보
- SGID, SUID, World Writeable 정보
- Docker, LXC 컨테이너 정보
사용법은 아래와 같다.
[ 명령어 결과를 콘솔에 출력하지 않음 ]
./LinEnum.sh -e [파일이 저장될 디렉터리] -r [저장할 파일 이름] >/dev/null
[ 명령어 결과를 콘솔에 출력 ]
./LinEnum.sh -e [파일이 저장될 디렉터리] -r [저장할 파일 이름] 2>/dev/null
수동 체크 리스트(Unix/Linux)
1. 시스템 정보 수집
[ OS 버전 확인 ]
- cat /etc/issue
- cat /etc/*-release
[ 커널 버전 확인 ]
- cat /proc/version
- uname -a
- rpm -q kernel
[ 환경 변수 및 공유 정보 확인 ]
- cat ~/.bash_profile
- cat ~/.bashrc
- cat /etc/profile
- cat /proc/self/cmdline
[ 디스크 정보 확인 ]
- df -h
[ 마운트 해제된 파일 시스템 정보 확인 ]
- cat /etc/fstab
[ 시스템 환경 정보 확인 ]
- env
- set
2. 네트워크 정보 수집
[ 호스트 이름 확인 ]
- hostname
[ DNS 도메인 이름 확인 ]
- dnsdomainname
- cat /etc/resolv.conf
[ IP 및 네트워크 인터페이스 확인 ]
- ifconfig -a
- ip add
- cat /etc/network/interfaces
[ 네트워크에 존재하는 호스트 검색 ]
- netdiscover
[ 특정 포트를 사용하는 프로세스 정보 확인 ]
- lsof -i
[ TCP & UDP 소켓 확인 ]
- netstat -antup
[ 다른 시스템과 통신 중인 네트워크 정보 확인 ]
- arp -e
- route -nee
3. 사용자 정보 수집
[ 접속 계정 이름 확인 ]
- whoami
- id
[ 계정 정보 확인 ]
- cat /etc/group | cut -d: -f1
[ 그룹 정보 확인 ]
- cat /etc/group
[ 현재 로그인 사용자 및 마지막 로그인 정보 확인 ]
- last
- w
[ sudo 사용 가능 계정 정보 확인 ]
- cat /etc/sudoers
[ 계정 패스워드 정보 확인(패스워드 미설정 계정 등) ]
- cat /etc/shadow
[ 계정 별 홈 디렉터리 확인 ]
- ls -ahlR /root/
- ls -ahlR /home/
[ 사용자 명령어 기록 확인 ]
- cat /root/.*_history
- cat /home/*/.*_history
4. 권한 정보 수집
[ sudo 권한으로 실행 가능한 작업 정보 확인 ]
- sudo -l
[ SUID 권한이 부여되어 있는 파일 확인 ]
- find / -perm -u=s -type f 2>/dev/null
[ GUID 권한이 부여되어 있는 파일 확인 ]
- find / -perm -g=s -type f 2>/dev/null
[ World Writeable 디렉터리 확인 ]
- find / -perm -o=w -type d 2>/dev/nul
[ 권한 상승에 사용될 수 있는 알려진 파일 검색 ]
- which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python
python2 python3 python2.7 python2.6 py
5. 스케쥴링 정보 수집
[ 예약된 작업 확인 ]
- cat /etc/cron*
6. 서비스 정보 수집
[ 바이너리 파일을 통한 서비스 확인 ]
- ls -alh /usr/bin/
- ls -alh /sbin/
[ 실행 서비스 정보 확인 ]
- cat /etc/inetd.conf
- cat /etc/xinetd.conf
[ 설치된 패키지 정보 확인 ]
- dpkg -l
- rpm -qa
[ 프로세스 정보 확인 ]
- ps aux
- ps -ef
- top
[ 등록된 서비스 정보 확인 ]
- cat /etc/services