klaus

[KDT-DAY_16] SELinux (feat.모니터링) 본문

카테고리 없음

[KDT-DAY_16] SELinux (feat.모니터링)

klus! 2023. 1. 21. 18:50

0. 들어가기

 

 

nano /etc/rc.local

bash /home/centos/bak.sh

nano /home/centos/bak.sh

#! bin/bash

set $(date)

fname="backup-$2$3-tar.gz"

tar /cvfz /home/centos/bak/$fname /tmp

 

- $는 2, 3 번으로 몇시에 만들어졌다 라는 의미

- /tmp아래에 $fname변수를 만들어서 저장하겠다.

-결과물이 앞에 나오도록

 

chmod +x /home/centos.bak.sh

실행파일로 만든다

shutdown -n

 

rc.local에 실행권한을 주기

ls -l /etc/rc.local

리부팅 하면 해당 파일이 있다.

 

 

1. 프로세스 모니터링 하기

- process는 해당 프로그램을 싱행한 사용자의 권한으로 실행되므로  역으로 프로세스를 보면 침투 모니터링이 가능

옵션

ps ef ~ OR ps aux ~ 명령어를 사용하여 외부에서 접속한 내역을 보고 연결을 끊을 수 있다.

 

[실습]

우분투에서 ssh를 통해 원격 접속하고 centos에서 확인하여 kail하기

 

centos에서 ps로 last ,w 를 통해 외부에서 로그인된 정보를 볼 수도 있지만, ps aux옵션으로 PID확인 후 ka

kill -9 3282로 연결 끊기

 

[+] find 옵션을 사용하여 모니터링 하기 

여러 옵션(-perm(권한), -name(파일_명), -type f/d(파일/디렉터리), -not(부정), -iname(대소문자 무시 파일_명),

-user(사용자), -used(사용기간), -inum(i-node 숫자), -empty(빈 파일/디렉터리), -size ! +100M(100M 이하), ...)을 사용해서 파일을 찾은 뒤, 에 -exec 명령어 {} \;를 추가해서 한 번에 처리 시킬 수 있다. 

find의 옵션을 응용하여 확인할 수 있다. (공격자의 파일 찾기)

 

find /home -newer /root/test.txt -exec cp -arp {} \;

find / -used 2 -exec 1s -1 {} \; find / -user root -perm -4000 -print find /dev -type f-exec 15 -1 {} I;

find / -iname ".rhosts (OR .r*)"

-exec rm -rf {3 l;

find / -name ".bash_history" - size 0 -exec 15 -1 (3 1;

find / -nouser -o -nogroup -print

find . -type f-exec Is -s f} \; | sort -n -r I head -5

 

-dev/ 에 파일을 숨겨놓는것은 이상하다?? 장치!!

- rhost는 원격호스트 찾기

cp -arp { } \; 속성을 유지한 상테에서

 

 

- touch test.txt 파일을 만들고 조금 시간이 지나고 hack.txt을 만들고

find / -newer /home/centos/test.txt -exec ls - { } -l \;

 

find / user root -perm -4000 -exec ls - {} \;

1000/ 오류가 뜰 때

mount remount,rw /

 

- 특정 사용자/그룹을 지정하지 않은 파일 찾기

 

커널에서 실행될 수 있는 최대 파일 숫자와 프로세스의 수를 지정

- 머신에 지정된

최대 돌릴 수 있는 파일 확인

/etc/sysctl.conf에서 fs.file-max=770000으로 설정하여 최대 실행될 수 ㅇ

 

파일 읽기 권한 

 

Linux의 디폴트 AV 설정 및 사용

- clamd 설치

> yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

> freshclam = 업데이트

ls -l /var/lib/clamav 해서 바이러스 정의 데이터베이스 파을을 확인

/etc/sysconfig/freshclam 설정

>> FRESHCLAM_MOM=60 (60분 마다 업데이트)

>>FRESHCLAM_DELAY=disabled

 

- systemctl enable clamav-freshclam.timer -now

 

 

 

 

> chkconfig --level 35clamd on

> systemctl start clamd

> setenforce 0

freshclam = 업데이트

https://haru.kafra.kr/82

 

리눅스의 백신 ClamAV 를 CentOS7 에 설치하기

ClamAV는 리눅스진영에서도 사용이 가능한 오픈된 방식의 무료 백신이다. 물론 다른 운영체제에서도 사용이 가능하다.하지만 윈도우를 쓰면 기본적인 GUI방식의 많은 무료 프로그램들이 있기에

haru.kafra.kr

 

 

3. 보안 모니터링

▪ 타겟에 관한 광범위한 정보를 알려주는 - Nmap

2022.11.05 - [모의해킹/Tools] - NMAP(feat. 포트 스캐닝 SW, NSE 실습)


▪ 만능 보안도구인 - NetCat


 Swiss Army Knife로도 알려진 작지만 강력한 ncat은 주로 백도어로 사용되지만 포트스캔, 파일 송수신도 할 수 있다. netcat은 다양한 기능이 있으므로 잘 알아두면 좋다. 더 자세한 것은 NetCat에 관한 별도의 서적을 참고하기 바란다.
▪ 패킷 분석에 쓰이는 - TCPdump
  Tcpdump는 Wireshark와 유사한 패킷분석 도구로써 네트워크를 모니터링해서 인터페이스에 도달한 데이터를 콘솔에 텍스트로 표시해주므로 네트워크에 사용자 크레덴셜(사용자명과 패스워드)이 암호화되지 않은 채 평문으로 전송되면 바로 볼 수 있다. 
▪ 파일의 변조 유무를 알아내는 - TripWire
  tripwire는 해커가 타겟 시스템에 침입해서 어느 파일을 변조한 경우 그 변조된 파일을 찾아주는 도구이다. 원리는 기존 파일의 해시 값과 속성을 저장한 데이터베이스를 만들어 두고(일종의 snapshot) 현재 파일의 해시 값과 속성 정보를 이 데이터베이스에 저장된 정보와 비교해서 변조된 파일을 찾아내는 원리이다. 이런 기법은 AV 프로그램의 작동과 유사하다. 하지만 실시간 확인은 불가능하다. 
=>가능한 한 시스템 설치 후 바로 Tripwire를 실행시켜 두는 것이 좋다.
  이 패키지를 설치하면 /etc/tripwire 디렉터리에 
site.key(사이트 키), 
tw.cfg(구성설정), 
twcfg.txt(구성설정 편집), 
tw.pol(정책설정), 
twpol.txt(정책설정 편집), 
ubuntu-local.key(로컬 키) 파일이 생성된다. 
site.key 파일은 설정파일과 정책파일을 암호화할 때 사용되고, 
tw.cfg와 tw.pol 파일은 tripwire를 설정하는 이진파일이어서 편집이 불가하므로 twcfg.txt와 twpol.txt 텍스트 파일을 편집기로 편집 한 뒤 패스워드를 넣어서 암호화하면 tw.cfg와 tw.pol 파일로 전환되어 적용되는 원리이다. 
ubuntu-local.key는 시스템 데이터베이스를 초기화할 때 필요하다. 
원래는 최초로 설치한 뒤 이 작업을 해서 기준으로 잡는 것이 좋지만, 현재 상태를 기준으로 잡을 수도 있다. 그러면 이 이후에 파일 작업이 있으면 기준과 비교해서 변경을 잡아낼 것이다.  
▪ 파일시스템 변경을 모니터링 하는 - RPM과 AIDE 
  침입 등으로 인해서 시스템에 파일이 생성되거나 수정되는 등의 변경이 생기면 RPM 도구도 파일시스템을 점검하는데 제한적으로 사용될 수 있다. RPM 도구는 자신이 직접 설치하지 않은 RPM 파일에 대해서는 정보를 가지고 있지 않다는 제약이 있기 때문에 해커는 루트킷으로 트로이 목마를 RPM으로 설치하거나 데이터베이스를 RPM 소스로 변경해서 RPM 도구가 감지하지 못하게 해서 악성코드를 숨기기도 한다. RPM으로 모니터링 하는 것은 뒤에서 보자. 

  그러나 tripwire와 유사한 AIDE(Advanced Intrusion Detection Environment)라는 도구를 사용하면 이런 RPM 도구의 단점을 보완할 수 있다.   tripwire는 더 이상 CentOS에 포함되어 있지 않지만 AIDE 도구는 Base 리포지터리로 설치할 수 있다. AIDE는 체크섬과 권한에 관한 데이터베이스 파일을 가지고 있으므로 이를 암호화해서 읽기전용 매체에 보관하면 해커에 의한 RPM 포맷으로의 변경을 잡아낼 수 있다. 시스템을 네트워크에 연결하기 전에 데이터베이스를 만들어 두면 aide는 CentOS의 오리지널 구성 파일을 데이터베이스화해서 지니게 되므로 이와 비교해서 변경 여부를 쉽게 확인할 수 있게 된다. 
▪ 외부에서 시스템 포트를 스캔하는지 실시간으로 검사하는 - PortSentry
  nmap이 외부에서 타겟 시스템의 포트를 스캔해주는 침투도구라면 
  portsentry는 실시간으로 메모리에 상주하면서 nmap과 같은 외부에서 해당 시스템의 포트 스캔을 탐지해서 막아주는 방어도구이다. 이 도구는 현재는 Cisco사에서 소유하고 있다. 시스템을 스캔한 침투자의 IP를 검사해서 TCPwrapper의 /etc/hosts.deny 파일에 침투자 IP를 넣어서 원천적으로 차단시키거나, 관리자에게 이메일로 침투자를 알려주거나, 또 스캔공격을 받을 때 외부 스크립트나 실행파일을 실행해서 자동으로 침투머신에 역공격을 수행시킬 수도 있다. 포트에 보초를 세운다는 의미로 /etc/portsentry/에서 *.conf 파일 등을 잘 살펴보면 어떤 메커니즘으로 이 도구가 동작하는지 파악할 수 있다. 

  Rootkit 탐지하기
  루트 킷의 주된 목적은 백도어 심어두기와 침투흔적 삭제이다. 백도어는 해커가 다음에도 별도의 수고 없이 타겟 시스템에 쉽게 로그인할 수 있게 해주는 악성코드로써 관리자는 항상 이를 감지해내야 한다. 해커가 서버에 침투하면 악성 프로세스 감지나 백도어 탐지를 위한 find, ps, w, ls, cat ...와 같은 이진 실행파일 명령어들을 변조해서 해당 명령어의 실행결과가 다르게 나오게 하는 수법도 사용한다. 따라서 이들 명령어가 들어있는 /bin, /sbin, /usr/ bin, /usr/sbin 등 디렉터리에서 파일의 변조 여부를 집중 감시하면 루트킷을 발견할 기회가 커진다. 

  또 변경된 명령어 때문에 악성 프로세스나 백도어를 찾아내는 것이 힘들다면 작업했던 정보나 외부 접속기록을 가지고 있는 로그파일을 검토하는 것도 하나의 방법이다. 하지만 해커도 이를 알고 침투 후에 로그를 삭제하거나, 침투 중에 로그 데몬을 중지시키기도 하고, 과도한 조치는 오히려 의심을 살 수 있으므로 침입 당시의 로그만 삭제하거나 가짜 로그로 대체시키는 수법까지 사용한다. 창과 방패의 싸움이지 않은가?! 
 
▪ 루트킷을 찾아내는 – chkrootkit과 chkproc, chkwtmp
  이들 도구는 루트킷을 찾아낸다. chkrootkit으로 rootkit 도구가 시스템에 숨겨져 있는지 찾아내고, chkproc는 해커가 내부 시스템에서 실행시키고 있는 악성 프로세스를 찾아내고, chkwtmp는 지금까지 사용자들의 로그인, 로그아웃 했던 모든 내력을 모두 저장하고 있는 /var/log/wtmp 파일을 점검해서 해커가 비워놓았는지(null bytes) 검사해준다.  
▪ 루트킷 사냥꾼 - rkhunter 
▪ 동일머신으로부터의 SSH 접속 수를 제한하는 - connlimit 
  해커가 특정 머신에서 타겟 서버에 패스워드를 크랙하기 위해서 반복적으로 SSH를 통해서 접속을 시도하는 경우 주어진 수의 SSH 연결 이상을 차단하는 도구가 connlimit이다. 이런 기법을 응용하면 동일한 머신에서 무수한 좀비 머신, 좀비 IP, 좀비 MAC 주소를 생성해서 연결해 오는 DDoS와 같은 공격을 막을 수도 있다.
▪ 로그로 침입여부를 판단해주는 - Logcheck와 Logwatch 
  해커는 타겟 시스템에 들어와서 파일 등을 변조하거나 악성 백도어를 심어둔 뒤 작업 흔적을 지우기 위해서 작업했던 기록을 가지고 있는 로그파일을 변조하기도 하므로 관리자는 Logcheck, Logwatch, 그리고 Loganalyzer와 같은 도구로 시스템 로그를 검사해서 시스템에서 일어난 중요한 작업이나 로그파일 변조유무 등을 확인해서 침투된 여부를 판별할 수 있어야 한다. 
=>이를 위해서 로그파일을 반드시 다른 머신에 저장시키는 구조의 네트워크를 구축해 두어야 한다. 뒤에서 로그 서버를 별도로 살펴볼 것이다. 
  
  시스템 점검도구로 시스템 로그에 관한 Logcheck와 Logwatch, 파일의 변경이나 백도어  업로드 등 파일에 관한 Filewatcher, 또 특정 로그 체크와 사용자 정의 작업에 관한 Watchdog 등이 있다. Logcheck 도구는 침투가 우려되거나 중요한 서비스 항목에 대해서 로그파일을 생성시켜서 해당 서비스에 문제가 있을 때 관리자에게 메일링하도록 설정해주는 도구이다.  

 

 

Comments