주요통신기반시설
(과거자료 최신자료는 kisa에 있습니다.)
https://www.kisa.or.kr/public/laws/laws3_View.jsp?cPage=6&mode=view&p_No=259&b_No=259&d_No=106&ST=T&SV=
최
취약점 진단에서 가장 중요한 것은 시스템 진단이다.
취약점 진단 :
IT 운영환경에 대한 취약점 진단 및 보호대책을 수립하여 정보보호 수준 향상
웹 취약점 진단 및 소스코드 취약점 진단
모의해킹 :
실제 해킹과 동일한 형태의 공격을 통해 실제적인 보안 취약점 확인 및 제거
취약점 진단하고 모의 해킹의 차이 :
모의해킹은 시나리오 형식의 공격을 취한다.
EX) 취약점 진단은 주요정보통신기반시설 가이드에 기반하여 진단을 한다.
EX) S기업의 모의해킹 시 S사에서는 홈페이지만 주고 사이트를 뚫어보라고 한다.
취약점 진단 시 고객사 담당자와 협의를 한다. OS, DB 등 6개의 플랫폼에 대하여 어떻게 진단을 받고 싶은지 확인한다.
EX) 금융권에서는 금융취약점분석평가를 기준으로 평가한다.(금융보안원에서 가이드를 발행한다.)
금융권이 어려움이 느껴지는 이유는 Private망밖에 없다.
시스템 진단은 자동화로 돌아가고 있다. 지란지교의 솔루션을 많이 사용한다.
OS, DB, WAS, 보안장비 등 6개를 진단.
기본지식이 없으면 솔루션이 진단하는 것에 그치지 않는다.
실제 환경분석을 할 때 Open 포트, 데몬, 계정을 가장 먼저 진단한다.
취약점 진단 후 1차 보고서를 작성 후 고객사와 인터뷰를 진행해야 한다.
실무에서 대부분 정보보안 담당자는(취약점 진단 경험이 적다.) 따라서 보고서에 진단 결과는 명확해야 하며 보완해야 하는 부분을 명확하게(어떤 누가 읽어도 똑같은 해석이 나와야 한다)
최종보고서를 작성 후 이행점검을 해야한다. 이행점검은 진단에 나온 것만 해야한다. (계약에 의한 진단이기 때문에 정해진 것만 해야한다.)
대부분 회사에서 취약점 진단 실무는 비슷하다.
형상 : 서버 안에 들어 있는 기능들의 형태 (서버형상이 같은가는 실무에서 많이 물어본다.)
CVE 취약점 진단 방법 : 웹 서버를 구성하고 스크립트를 돌린다. 전체 데몬을 뽑아서 DB에 넣는다. DB에 OS사의 데몬 정보 + CVE 취약점을 비교하여 적용해본다. 그리고 오픈 포트를 확인 후 종합적으로 CVE취약점을 진단한다.
오신트 : 기업의 정보나, 기업 안의 개인정보가 외부에 노출되있는 것들을 찾아서 분석할 수 있는 것들 EX) 쇼단
취약점 진단에서 Linux
취약점 진단 시 Kernel의 버전이 최신인지 확인한다. www.kernel.org
에 들어가 정보를 확인한다.
또한 Shell을 확인해야한다. 가장 많이 보는 쉘은 bash이다.
cat /etc/passwd | grep bash
로그인 가능한 계정을 검색하는 것.
init는 부팅 스크립트이다. 버전이 올라갈 수록 init라 부르지 않고 initd로 저장돼 있다.
uid 500번 이상은 대부분 Home에 저장된다. (모두는 아니다)
유닉스에서 데몬을 설치하는 방식은 2가지 패키지 버전을(레파지토리에서 받아오는 것)
직접 사이트에 가서 다운받고(최신버전)을 깔아 넣는다. (Source 방식)
계정이 존재하면 로그인을 해봐야 한다.(따라서 home등 다른 디렉터리를 봐야한다.)
취약점 진단수행에서 하지말아야 할 명령어 : root에서 find 명령어를 찾으면 안 된다. 장애가 난다.(리소스를 많이 잡아 먹기 때문에, 경로 지정을 잘하면 괜찮다.)
취약점 진단 시 대상 서비스의 확인을 위해 cat 명령어를 많이 쓴다. grep 또한 많이 쓴다.
개정 생성이 가능하고 로그인이 가능한데 로그인시 bash_history가 없으면 불필요한 개정으로 취약점으로 진단한다.
wheel 그룹은 관리자 권한을 대행하는 그룹이다. wheel 그룹에 추가 된 사용자외에는 su, sudo 명령어 접근을 제한 시켜 시스템 보안을 높여야 한다.
SYSTEM 환경분석
기본정보
OS(윈도우, Linux/Unix 등) , DBMS(Oracle, MSSQL, MySQL 등) , WEB Server(Apache, IIS, Ngnix 등) , WAS(Tomcat, WebLogic, Jesus 등)
WAS는 컨테이너가 중요하다. 컨테이너 안에 API호줄 등이 있다. 즉 수동으로 컨테이너의 모든 번호를 봐야한다.
Tomcat을 확인할 때는 카탈리나 베이스(catalina_base)를 기본으로 검색한다.(grep으로)
네트워크 안에 뿌려진 계정관리를 위해 존재하는 것이 AD(AD에 조인돼 있으면 로컬 보안정책이 gpo로 따라가기 때문에 인터뷰를 통해 확인해야 한다.)
DBMS 분석 시 root계정으로 DBMS가 동작하더라도 무조건 취약점이 아니다.
계정분석
cat /etc/passwd | grep bash
신입에게 가장 중요한 부분은 어떤 포트가 열려 있나? 어떤 계정이 존재하고 계정의 권한 등 환경 분석에 필요한 기초를 바란다.
분석 총평(작성법)
기본 정보 : EX) CentOS6.9 MySQL 5.1.73-6 하이퍼 앞에는 메이저 버전 하이퍼(-)뒤에는 마이너 버전. 해당 메이저 버전에서 세부적으로 몇 번 패치 됐는지 보여주는 것. CVE취약점 진단할 때 유용하다.
Port 정보(취약점 정보가 많이 나온다.)
RPC(Remote Procedure call) 관련 포트 및 프린터 포트가 불필요하게 오픈되어 있음. 회사에서는 원격 백업을 할 시 RPC가 쓰인다.
Daemon 정보
rpcbind, rpc.statd 등의 daemon이 불필요하게 활성화되어 있음
-> 데몬이 돌고 있는 것은 서비스가 실행되고 있다는 뜻. 시스템이 쓰냐, 사용자가 설치해서 쓰냐, 아무도 모르게 설치되서 사용되는냐 확인
계정정보 :
OS 버전
grep ./etc/*release로 확인한다
cat /etc/*release
CentOS release 6.9
DBMS 버전
mysql -V
Ver 14.14
WEB Server 버전
Apache 2.2.15(Unix)
WAS 버전
없음
Port 분석
25 | TCP | SMTP (Simple Mail Transfer Protocol) - 이메일 전송에 사용 | 공식 |
3306 | TCP | MySQL | 공식 |
111 | TCP | UDP | RPC (Remote Procedure Call) | 공식 |
22 | TCP | 시큐어 셸 (SSH, Secure SHell) - ssh scp, sftp같은 프로토콜 및 포트 포워딩 | 공식 |
631 | TCP | 인터넷 프린팅 프로토콜 | 공식 |
RPC(631)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해주는 프로세스간 통신.
rpcbind란 NFS(네트워크파일시스템) 같은 서비스가 동작할 때 well-known 포트를 사용할 수 없기 때문에 /etc/rpc에 기록된 서비스를 rpcbind로 묶어서 어떠한 요청이 들어오면 연결 시켜주는 역할을 한다.
cupsd 데몬이란 Common UNIX Printing System으로 리눅스에서 프린터를 하기위한 데몬. 설치하면 기본으로 열리는 포트이다.
rpc.statd 데몬이란 lockd와 함께 작동하여 잠금 관리자에 대해 충돌 및 복구 기능을 제공하고 NFS 서버에 대한 잠금을 보유한 클라이언트를 추적한다. lockd는 백그라운드에서 돌아간다.(그래서 안 떠있음) rpc에서 lockd가 없으면 NFS를 사용하지 않는다고 봐도 된다.
(rpc.statd 포트번호는 랜덤을 떠있다.)
tcp | 0.0.0.0:22 | ||||
tcp | |||||
Daemon 분석
(열려있는 포트를 확인하고 데몬들을 분석한다)
EX) 위에 PID/Program name들을 ps -ef | grep 으로 확인한다.
ps -ef | grep "httpd\|mysql\|rpc"
PS
-e : 모든 프로세스를 보여줌
-f : 프로세스의 자세한 정보를 보여줌
ps -ef 명령어시 " [] " 는 시스템이 사용하고 있는 것이라 진단을 안 해도 되며 나머지를 확인하면 된다.
EX) ps -ef | grep mysql
USER | Daemon | 목적 | Daemon 경로 | 비고 |
root | mysqld_safe | mysql_safe 구동확인 | datadir=/var/lib/mysql | /usr/bin/ |
mysql | mysqld | mysql 구동 | datadir=/var/lib/mysql | /usr/libexec |
httpd | httpd | 웹 서버 소프트웨어의 총칭으로 HTTP 액세스에 대응하기 위한 소프트웨어(httpd란 HTTP Protocol을 지원하는 daemon. d = daemon) |
. | /usr/sbin |
root | init | 시스템커널부팅 프로그램 | /sbin/init | |
root | udevd -d | 리눅스 커널 장치관리자 | /sbin/udevd -d | |
root | rsyslogd.syslogd | 시스템로그 관리 | /sbin/rsyslog -i /var/run/syslogd.pid -c | |
root | rpcbind | 원격호출관리 | ||
root | rpc.statd | 클라이언트와 서버의 상태 | /sbin/rpc.statd | |
root | sshd | ssh서비스 | /usr/bin/sshd | |
root | master | Postfix메일 서버 마스터 프로세스 | /usr/libexec/postfix/master; | |
root | crond | 정기적 작업을 위해 | /usr/sbin | |
root | at | 한 번만 작업할 때 사용하기 위해 사용 | ||
root | pam.d | 리눅스 사용자 인증 및 접근 권한 설정관리 | /etc/pam.d pam: gdm-password |
|
root | python | 스크립트 서버 구성 실행 | python /usr/share/system-config-printer/applet.py | |
사용자 root 1924는 PID /bin/sh는 실행하면 나오는 bash쉘 /usr/bin까지가 경로이며 mysqld_safe가 데몬이다.
데몬 경로는 datadir=/var/lib/mysql이다
mysql이 사용자 PID 2026 /usr/libexec 까지가 경로이며 mysqld가 데몬이다.
사전지식
/bin : binary의 약자로 실행파일 모음. 일반적으로 사용하는 mv, cat등 명령어 프로그램들이 있음
/usr : 주로 새로 설치되는 프로그램들이 저장된다. '명령어' 보다는 '프로그램'이라고 부르는게 더 익숙한 놈들이 저장된다. 윈도우의 Program Files같은 폴더
postfix란 ? 메일서버 소프트웨어
계정분석
cat /etc/passwd | grep bash
UserName | Info | Home Directory | Command/shell | 비고 |
root | root | /root | /bin/bash | 최고관리자 |
bin | bin | /bin | /sbin/nologin | 명령어실행 |
uucp | uucp | /var/spool/uucp | /sbin/nologin | |
cubrid | ||||
adiosl | ||||
계정이 4개인 리눅스
ls -al로 홈 디렉터리로 들어가서 파일들을 확인해보고 bash_history로 검색기록도 보고 history기록이 없으면 취약적으로 잡는다. 홈 디렉터리로 이동 후 bash_history를 확인한 모습
Linux 취약점 진단 상세결과
취약한 패스워드 점검, 로그인이 불필요한 게정 shell 제한은 인터뷰를 통해 알아내야 한다.
주요정보통신기반시설에도 su에 대해 제재한다.
umask는 2가지로 생각해볼 수 있다. 022 mask는 디렉터리는 755권한 파일은 644권한을 가진다는 뜻이다.
디렉터리는 777이 기본, 파일은 666이 기본.
SetUID, SetGID 4755로 기본적으로 설정돼 있는 파일을 4750으로 바꿔야한다.
inetd -> 버전이 바뀌면서 xinetd바뀐다. 인터넷 슈퍼데몬이다. 외부에서 요청이 있을 시 동작한다.
crontab 은 default 값이라 진단해야한다.
/etc/profile 환경변수 지정을 하는 곳이다.
FTP 리눅스에서는 vsftp를 가장 많이 사용한다. ftp 사용여부는 daemon, port로 확인하고 실제 접근을 해본다.
init 링크에 쓰기권한이 있는지 확인해야한다.
systemlog에서는 타사용자에게 su권이 있는지 확인한다.
smtp는 sendmail을 가장 많이 쓴다. 릴레이를 제한해야 한다.
samba(사이트 로그인 시 아이디가 틀렸습니다, 비밀번호가 틀렸습니다 처럼 명시하지 않아도 되는 정보가 도출되는데, 이것을 -> 아이디 또는 비밀번호가 틀렸습니다로 바꿔주는 프로토콜)
'기타 교육 > 정보보호 컨설팅 전문가 양성과정' 카테고리의 다른 글
7 - 모의해킹(OWSAPBrokenweb/) (0) | 2021.06.04 |
---|---|
6 - 네트워크 보안(OSI 7계층, 이더넷, Data Header(데이터 헤더), CSMA/CD, IP 프로토콜, Hub, Wire Shark) (0) | 2021.05.28 |
4 - 시스템 보안 (0) | 2021.05.25 |
3 - 개정 데이터 3법의 주요 내용(개인정보 보호법을 중심으로) /해킹 사례로 보는 개인정보 보호조치 (0) | 2021.05.24 |
2 - 법과제도/개인정보보호법 (0) | 2021.05.21 |