취약점 (분석) 명령어
1. 시스템 내부 확인
현재 실행중인 프로세스 확인 | 내가 알고 싶은 서비스
ps -ef ps -ef | grep httpd
마지막 접속 확인 : lastlog ---> 내용을 확인하기 위한 명령어 : wtmp파일 기반
각 계정을 기준으로 한 마지막 접속 시간 확인 /시간정보 + IP 정보
2- 외부 접속 확인
/var/log/secure === auth.log
set UID : (권한제어)
setuid --> 현재 사용자의 권한 : UID ---> 0 : root
일반 사용자 (1000 보다 크다)
구현은 500(옛날에)
ferhan 1003
-------- :ID 사람이 보는 계정명
------- : UID 시스템이 보는 계저명
ferhan(1003) ------------> ferhan (0) ------> 시스템 입장에서는 root 가 된다.
접근제어 : superuser (root)만 사용할 수 있는 실행파일이 담긴 디렉터리 /sbin
일반 계정도 사용할 수 있는 디렉터리 /bin
시스템은 /sbin 안에 있는 파일을 실행할 수 있다면 root로 인식한다.
---> 필수 조건 : sticky ---> 관리자의 권한으로... (예: cmd : runas /user:kitri 실행파일)
퍼미션 : 일반적인 퍼미션 : XXX
- : 유저
- : 그룹
- : 기타
[root@localhost ferhan]# umask
0022
[root@localhost ferhan]#
sticky bit : 4 2 1
1: 아무나 관지자의 권한
2: 그룹 관리자의 권한
4: 소유자 관리자의 권한
6: 그룹 소유자 관리자의 권한
7: 모든 (항상) 관리자의 권한
이 권한을 갖고 있는 파일은 실행하고 있는 동안에만 권한이 유지된다.
이와 비슷한 명령어 : sudo
해커가 시스템에 침투 했을 떄 나중을 고려하여 다음번에도 관리자의 권한을 얻기 위해 사전준비한다.
Rootkit
find / -type f /( -perm -004000 -o -perm -001000 /) -exec ls -lg ({} \ ----------------> 검사 코드
find / -user root -perm -4000 -print > 4000_perm.txt
차후에
find / -user root -perm -4000 -print > 4000_perm_1.txt
2개의 파일을 중복 검사한다.
diff 4000_perm.txt 4000_perm.txt
백도어 설치 여부 점검 ---> /dev /tmp : 기본적으로 디렉터리 퍼미션에 sticky 가 적용 됨
파티션별 디스크 사용량 점검
로컬 저장소 ---> 직접 연결된 HDD , CDROOM, USB <-- 유틀맅티 /df
원격 저장소 : SMB(CIFS) / NFS /
ISCSI 초기자 SAN storage attach network --> 스로리즈의 접근을 네트워크를 통해 한다
NAS : network attach storage --> 네트워크의 접금하여 사용하는 스토리즈
4- tripwire 먼저 시스템에 존재하는 파일에 대해 데이터 베이스를 만들어 저장한 후 생성된 데이터베이스와 비교하여 추가·삭제되거나 변조된 파일이 있는지 점검하고 관리자에게 레포팅해주는 무결성 검사도구이다.
wget 으로 다운, 압출 풀고 , 설정
5- 포트 스캔 : 열려 있는 포트 및 응답 가능한 포트 점검 ( 자신의 시스템 : 시스템 관지자가 포트관리 하는데 있어 기본 열러 있는 포트 또는 서비스 중인 포트를 제외한 의심스어운 포트를 찾기 위해 사용한다.
------------------------
netsat -atp | grep LISTEN
외부 호스트의 포트 확인 (nmap 포트 스캔과 같다 )
telnet (클라이언트 ) 서비스를 이용하자
telnet 설치 되어 있지 않아서
yum -y install telnet
[root@localhost ~]# telnet 192.168.0.8 22
Trying 192.168.0.8...
Connected to 192.168.0.8.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4
^C
Connection closed by foreign host.
[root@localhost ~]#
192.168.0.8 호스트에는 TCP 22번 포트를 사용하는 서비스가 있고
스는 서비스는 "SSH-2.0-OpenSSH_7.4 " 이다 .
--------------------------------- 해당 포트의 서비스 정보가 노출된다.
배너 그래빙 : 정보 수집 기법
민감정보
리눅스에서 telnet 서비스를 이용한 포트 스캔
for ((i=1;i<100;i++)); do telnet 192.168.0.8 $i; done
동작중에 멈추면 해당 포트에 서비스가 동작 중임을 알 수 있다.
lsof ==> list open files
시스템에서 열려 있는 파일
24u 4u --> 대기 시간을 의미한다
6- 실제 생성되어 있는
pstree
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
├─bluetoothd
├─boltd───2*[{boltd}]
├─chronyd
├─colord───2*[{colord}]
├─crond
├─cupsd
├─2*[dbus-daemon]
├─dbus-launch
├─dconf-service───2*[{dconf-service}]
├─dnsmasq───dnsmasq
├─evolution-addre─┬─evolution-addre───5*[{evolution-addre}]
│ └─4*[{evolution-addre}]
├─evolution-calen─┬─evolution-calen───8*[{evolution-calen}]
│ └─4*[{evolution-calen}]
├─evolution-sourc───3*[{evolution-sourc}]
├─fwupd───4*[{fwupd}]
├─gdm─┬─X───{X}
│ ├─gdm-session-wor─┬─gnome-session-b─┬─abrt-applet───2*[{abrt-appl+
│ │ │ ├─gnome-shell─┬─ibus-daemon─┬+ ++
│ │ │ │ │ ├+ ++
│ │ │ │ │ └+ ++
│ │ │ │ └─9*[{gnome-she+
│ │ │ ├─gnome-software───3*[{gnome-+
│ │ │ ├─gsd-a11y-settin───3*[{gsd-a+
│ │ │ ├─gsd-account───3*[{gsd-accou+
│ │ │ ├─gsd-clipboard───2*[{gsd-cli+
│ │ │ ├─gsd-color───3*[{gsd-color}]
│ │ │ ├─gsd-datetime───3*[{gsd-date+
│ │ │ ├─gsd-disk-utilit───2*[{gsd-d+
│ │ │ ├─gsd-housekeepin───3*[{gsd-h+
│ │ │ ├─gsd-keyboard───3*[{gsd-keyb+
│ │ │ ├─gsd-media-keys───3*[{gsd-me+
│ │ │ ├─gsd-mouse───3*[{gsd-mouse}]
│ │ │ ├─gsd-power───3*[{gsd-power}]
│ │ │ ├─gsd-print-notif───2*[{gsd-p+
│ │ │ ├─gsd-rfkill───2*[{gsd-rfkill+
│ │ │ ├─gsd-screensaver───2*[{gsd-s+
│ │ │ ├─gsd-sharing───3*[{gsd-shari+
│ │ │ ├─gsd-smartcard───4*[{gsd-sma+
│ │ │ ├─gsd-sound───3*[{gsd-sound}]
│ │ │ ├─gsd-wacom───2*[{gsd-wacom}]
│ │ │ ├─gsd-xsettings───3*[{gsd-xse+
│ │ │ ├─nautilus-deskto───3*[{nauti+
│ │ │ ├─ssh-agent
│ │ │ ├─tracker-extract───13*[{trac+
│ │ │ ├─tracker-miner-a───3*[{track+
│ │ │ ├─tracker-miner-f───3*[{track+
│ │ │ ├─tracker-miner-u───3*[{track+
│ │ │ └─3*[{gnome-session-b}]
│ │ └─2*[{gdm-session-wor}]
│ └─3*[{gdm}]
├─geoclue───2*[{geoclue}]
├─gnome-keyring-d───3*[{gnome-keyring-d}]
├─gnome-shell-cal───5*[{gnome-shell-cal}]
├─gnome-terminal-─┬─bash───su───bash
│ ├─gnome-pty-helpe
│ └─3*[{gnome-terminal-}]
├─goa-daemon───3*[{goa-daemon}]
├─goa-identity-se───3*[{goa-identity-se}]
├─gsd-printer───2*[{gsd-printer}]
├─gssproxy───5*[{gssproxy}]
├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
├─gvfsd─┬─gvfsd-burn───2*[{gvfsd-burn}]
│ ├─gvfsd-trash───2*[{gvfsd-trash}]
│ └─2*[{gvfsd}]
├─gvfsd-fuse───5*[{gvfsd-fuse}]
├─gvfsd-metadata───2*[{gvfsd-metadata}]
├─httpd───5*[httpd]
├─ibus-portal───2*[{ibus-portal}]
├─ibus-x11───2*[{ibus-x11}]
├─imsettings-daem───3*[{imsettings-daem}]
├─ksmtuned───sleep
├─libvirtd───16*[{libvirtd}]
├─lsmd
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─mission-control───3*[{mission-control}]
├─mysqld───29*[{mysqld}]
├─named───3*[{named}]
├─packagekitd───2*[{packagekitd}]
├─php-fpm───5*[php-fpm]
├─polkitd───6*[{polkitd}]
├─pulseaudio───2*[{pulseaudio}]
├─rngd
├─rpcbind
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─smartd
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-machine
├─systemd-udevd
├─tracker-store───7*[{tracker-store}]
├─tuned───4*[{tuned}]
├─udisksd───4*[{udisksd}]
├─upowerd───2*[{upowerd}]
├─vmtoolsd───2*[{vmtoolsd}]
├─vmtoolsd───3*[{vmtoolsd}]
├─wpa_supplicant
└─xdg-permission-───2*[{xdg-permission-}]
7- 시스템 운영 상황 점검
시스템 관제 <---- top
top - 14:37:40 up 1:21, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 219 total, 1 running, 218 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861052 total, 1714820 free, 1066860 used, 1079372 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2499792 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125740 4324 2636 S 0.0 0.1 0:01.47 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 S 0.0 0.0 0:00.18 kworker/u256:0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.16 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:01.07 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
top -d2 (delay 2 second)
정보값의 갱신주기는 2초다
whoami <---- 현재 사용중인 계정명
[root@localhost ~]# whoami
root
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@localhost ~]#
8- 백업 점검
백업 대상 ---> 파일 ---> 증분 ---> 1차 백업
2차 백업 ---> 백업할 때마다 원본을 유지 시킨다.
차분 ----> 기존 백업 데이터와 비교 후 ---> 상태값이 변화된 데이만 백업
---> 최종 데이터만 백업
DB ---> mysql dump ---> DB 자체 백업 ---> mysql -uroot -p DATABASE_NAME > DB_NAME.sql
---> DBMS 자체 ---> DB 명령어 전달 --> 자신의 DBMS
--> 백업 DBMS ----> 레플리카(복제)
-------> DB도 파일이다 .
명령어 -->단발성 : at
정기적 : cron
실직적인 데이터 전공 : scp / rsync
final project 백업 : conf 설정파일 / 네트워크 장비 설정값
9- 스팸메일 점검 (매일 queue) 디렉터리 점검
각 계정의 홈 디렉터리에 Maildir <--- cur / new / tmp
디렉터리 안에는 수신된 이메일 파일로 존재한다. ==> 다수 발견된다면 ...===> MailBoom ---> 폭탄메일 공격을 받았다 .
(다음주)
10 - Core 점검
서버내에서 긴급한 이상이 발생하였거나 시스템의 정확한 분석을 위해 서버의 메모리 상태를 순간적으로 dump 받는 경우
메모리 덤프 : Freezing // 파이썬의 pickle --> dump / load
find / -name core -exec ls -l {} \;
11- 파일 용량 점검
파티션 용량 | df -h
사용자별 / 그룹별 용량 점검 : repquota -av -ag
물리적인 하드디스크 용량을 점검 : fdisk - l
12- 계정이 입력한 명령어 --> 각 계정의 홈디렉터리로
ls -a
cat .bash_history
해커 ---> 접근 ---> 코드를 짠다
---------------------> 다운로드 ===> 환경 : CLI : wget
find / -name .bash_history -exec cat {} /; | grep wget
해커가 여기서 자기의 흔적들을 지우고 가
그리고 로그 정보들을
이 파일 전체를 날릴때도 있어 자기가 한 부분만 지울때도 있어
root 사유자 점검 (UID/GID)
해커 --> 권한 상승 공격 --> 해커의 계정이 0 0 세팅된다 .
cat /etc/passwd | grep 0:0
[root@localhost ~]# cat /etc/passwd | grep 0:0
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]#