Telnet과 SSH의 주요 차이점 중 하나는 네트워크 통신의 암호화 지원 여부입니다.
- Telnet: 암호화를 지원하지 않습니다. 데이터가 평문으로 전송되기 때문에 보안에 취약합니다.
- SSH (Secure Shell): 암호화를 지원합니다. 데이터가 암호화되어 전송되므로 보안성이 높습니다.
HTTP와 HTTPS의 차이점은 주로 네트워크 통신의 암호화 지원 여부에 있습니다.
- HTTP (HyperText Transfer Protocol): 암호화를 지원하지 않습니다. 데이터가 평문으로 전송되어 보안에 취약합니다.
- HTTPS (HyperText Transfer Protocol Secure): 암호화를 지원합니다. SSL/TLS 프로토콜을 사용하여 데이터가 암호화되어 전송되므로 보안성이 높습니다.
사전 실습환경 구축
- VirtualBOX
- PickPick
- Putty
- Notepad++
취약점 진단 vs 모의해킹 차이점
기준이 있고 없고의 차이
취약점 진단
- 기준: 일반적으로 자동화된 도구나 스캐너를 사용하여 알려진 취약점을 식별합니다. OWASP Top Ten과 같은 표준화된 기준을 따릅니다.
- 목적: 시스템의 취약점을 목록화하고, 이들 취약점의 심각성을 평가하여 보안 상태를 개선하는 데 초점을 맞춥니다.
모의 해킹
- 기준: 해커의 시각에서 시스템을 공격하는 방식으로 진행됩니다. 특정 기준 없이 실제 공격 기술을 사용하여 취약점을 발견합니다.
- 목적: 실제 공격자가 시스템에 침투하는 과정을 시뮬레이션하여 보안 방어의 효과성을 평가하고, 취약점을 실질적으로 악용할 수 있는지 확인합니다.
결론적으로, 취약점 진단은 기준에 따라 알려진 취약점을 찾는 반면, 모의 해킹은 기준 없이 실제 공격을 시뮬레이션하여 보안 상태를 평가합니다.
취약점진단관련 표준가이드 종류 3가지
- 주요정보통신기반시설 (KISA)
- 금융취약점분석평가(금융보안원)
- 각 회사마다 보유 하고 있는 가이드를 기반 진단 수행
취약점 진단방법
Web, Mobile, Source code 형태 웹 동적 어플리케이션 진단 3가지
- 블랙박스(정보 없음, nmap 포트 스캔부터 시작, 정보 획득 → 예상 시나리오를 작성 → 동적 공격시도 → 취약점 식별
- 그레이박스 (대상정보가 주어짐)
- 화이트박스 (대상, 아이디패스워드를 발급해놓은 상태에서 함)
- OS = UNIX ( RACEL 계열 (AIX OS, HPUX OS, 오라클리눅스))
- DATABASE (mysql, mariaDB, 오라클, mssql) -데이터베이스가 구조화되어있다. / 몽고DB - no sql database - 구조화X
- WEB (아파치, 엔진x, iis, 넵툰)
- WAS (톰켓, 웹스피어, 제이보스, 와일드플라이, 제우스)
취약점 진단 방법론
- 취약점 진단 진행 과정
- 사전협의단계
- 정보수집단계
COMMON PORT NUMBER
- HTTP 80
- FTP: (데이터 전송: TCP 20), (제어: TCP 21)
- SSH: TCP 22
- Telnet: TCP 23
- SMTP: TCP 25
- DNS: UDP 53
- Tomcat SSL 리다이렉트: TCP 8443
- Tomcat 관리자 디폴트 포트: TCP 8080
- TLS (port 443)
- SSL (port 20)
- Web sever (port 80)
- 진단정보요청
- 오픈포트분석
- 데몬분석
- 포트가 오픈되어있는데 데몬(아파치나 엔진엑스)가 없다면 무슨말일까?
- 계정분석
일반사용자계정에 대한 UID
- OS 7,6버전은 UID 500부터 시작
- OS 8버젼은 UID 1000번부터 시작
3. 취약점진단단계
오픈포트분석 + 데몬분석 + 계정분석에 대한 최종 진단
이후 진단수행 → 보안담당자 인터뷰 → 시스템담당자인터뷰
4. 보고서작성 및 프로젝트 종료
취약점 진단 첫번째 STEP
원격터미널서비스(telnet, SSH)가 구동중인지 확인 -> 데몬이 구동중인지 확인 " ps -ef "
권한부여 "644"
파일 시스템에서 파일이나 디렉토리에 대한 접근 권한을 설정하는 방식
권한 설명
- 6: 파일 소유자에게 읽기(4)와 쓰기(2) 권한이 부여됩니다. (4 + 2 = 6)
- 4: 그룹 사용자에게 읽기 권한만 부여됩니다.
- 4: 다른 사용자에게도 읽기 권한만 부여됩니다.
root:x:0:0:root:/root:/bin/bash
암호화여부 | UID | GID | 계정정보 | home directoy | shell 상태(지정여부)
passwd 파일
- Unix/Linux 시스템에서 사용자 계정 정보와 관련된 파일
- 이 파일에는 각 사용자의 계정 이름, 암호화된 비밀번호, 사용자 ID (UID), 그룹 ID (GID), 사용자 정보(예: 이름), 홈 디렉토리 경로, 기본 셸 등이 포함되어 있습니다.
- 일반적으로 이 파일은 /etc/passwd 경로에 위치하며, 시스템의 사용자 관리에 중요한 역할을 합니다.
- 보안상의 이유로 암호는 일반적으로 /etc/shadow 파일에 저장
주요정보통신기반시설 보고서에 따르면 passwd 권한 644 이하 일 경우 "취약" 이다.
하지만, 타 사용자도 읽기 권한이 있지만 변경을 할 수 없기 떄문에 양호 처리한다.
NFS(Network File System)는 네트워크를 통해 파일 시스템을 공유하는 프로토콜
netstat -tlnp 명령은 리눅스 또는 유닉스 시스템에서 네트워크 연결 상태를 확인하는 데 사용됩니다
netstat -tlnp
tcp / listen / network / PID
- -t: TCP 연결 표시
- -l: 수신 대기 중인 소켓 표시
- -n: 숫자 형식으로 IP 주소 및 포트 번호 표시
- -p: 해당 연결을 사용하는 프로세스의 PID와 이름 표시
RPC서비스(remote procedure call) :
- 서버 내 rpc 서비스가 존재 할 경우 내부 네트워크를 통해 Client 가 요청해서 서비스를 구동할 수 있음
XINETD / INETD (인터넷 슈퍼 데몬) :
- 서버 내부 XINETD / INETD 데몬이 구동중이고 디렉터리내 "r"(remote) Command 서비스가 등록되어 있을 경우 외부네트워크를 통해 Client가 요청해서 서비스를 구동할 수 있음
rpc.statd 서비스 :
- rpc 서비스에 대한 모니터링 관장하고 있고 추가적으로 NFS 서비스의 인증/인가 시 잠김상태를 확인 할 수 있음
rpc.locked 서비스 :
- NFS 서비스의 잠김 해제
UNIX 계열에서 안전하게 root 권한을 획득하는 방법
1. 일반 사용자 계정으로 로그인
2. "wheel" root 권한이 필요한 사용자만 추가가 되어있어야함
3. /bin/su 파일 내 "su" 관련 설정의 주석이 제거되어있어야 함
4. /bin/su 파일 그룹에 "wheel" 이 설정되어 있어야 함
구동이 되고 있는 데몬을 확인
- ps -ef | grep nfs
포트 80에서 구동되는 httpd는 웹 서버 소프트웨어(예: Apache)를 나타내며, 이는 HTTP 요청을 처리합니다.
- 0.0.0.0: 모든 IP 주소에서의 연결을 수신할 수 있음을 의미합니다. 즉, 서버의 모든 네트워크 인터페이스에서 요청을 받을 수 있습니다.
rpcbind 서비스 :
- rpc 관련 데몬을 실행 시 각각의 rpc 마다 주소를 부여해주고 매핑해주는 서비스
CUPS(Centralized UNIX Printing System)는 인쇄 서비스를 제공하는 시스템으로, 다음과 같은 포트를 사용합니다:
- 포트 631 (IPP): Internet Printing Protocol(IPP)을 통해 프린터와의 통신에 사용됩니다. CUPS는 이 포트를 통해 클라이언트와 인쇄 서버 간의 요청 및 응답을 처리합니다.
- 포트 25 (SMTP): Simple Mail Transfer Protocol(SMTP)로, 이메일 전송에 사용됩니다. 일반적으로 메일 서버 간의 메시지 전송에 사용됩니다.
root 계정으로 Apache Daemon을 구동할 경우 다음과 같은 문제가 발생할 수 있습니다:
- 보안 취약점: 웹 서버가 root 권한으로 실행되면, 공격자가 취약점을 이용해 서버를 해킹할 경우 시스템 전체에 대한 접근 권한을 얻을 수 있습니다. 이는 데이터 유출, 시스템 손상 등의 심각한 보안 문제를 초래할 수 있습니다.
- 불필요한 권한: Apache는 일반적으로 웹 페이지를 제공하는 데 필요한 최소한의 권한만 필요합니다. root 권한으로 실행하면 불필요하게 높은 권한을 부여하게 되어, 의도하지 않은 작업이 발생할 위험이 있습니다.
- 서비스 중단: 웹 서버가 root 권한으로 실행 중일 때, 잘못된 설정이나 코드로 인해 서버가 중단될 경우, 전체 시스템에 영향을 미칠 수 있습니다.
- 감사 및 로그 추적 어려움: root 권한으로 실행되는 프로세스는 로그 추적 및 감사가 어려워질 수 있습니다. 이는 문제 발생 시 원인 분석을 복잡하게 만듭니다.
이런 이유로 Apache는 일반적으로 www-data와 같은 비특권 사용자 계정으로 실행하는 것이 권장
@@@@@중요@@@@@
UNIX 계열에서 Daemon을 설치하는 방법은 여러 가지가 있지만, 두 가지 일반적인 방법은 다음과 같습니다:
- YUM (Yellowdog Updater Modified):
- YUM은 RPM 패키지 관리자를 사용하는 리눅스 배포판에서 소프트웨어를 설치하는 데 사용됩니다. YUM을 사용하면 리포지토리에서 패키지를 자동으로 다운로드하고 설치할 수 있습니다.
rpm -qa | grep httpd
이 정보를 통해 어떤 버전의 Apache HTTP 서버가 설치되어 있는지 확인할 수 있습니다
httpd-2.2.15-69
Major -Minor
2. 소스 코드에서 직접 컴파일 (git)
rsyslogd는 리눅스 및 UNIX 계열 시스템에서 로그를 수집하고 관리하는 데몬입니다. 운영 체제의 로그는 크게 두 가지로 나눌 수 있습니다:
- 시스템 로그 (System Logs):
- 운영 체제와 관련된 이벤트나 오류 메시지를 기록합니다. 예를 들어, 커널 메시지, 서비스 시작/종료, 하드웨어 오류 등이 포함됩니다. 일반적으로 /var/log/messages, /var/log/syslog와 같은 파일에 저장됩니다.
- ex)message, lastlog, wtmp, utmp, btmp, cron 등등
- SU (SU Logs)
- "su" 명령어를 실행한 로그
Automount 2가지 분류
- Local (디렉터리, 파티션, 디바이스 등)
- Network (같은 네트워크 내 타 서버 및 Client에 대한 디렉터리, 파티션을 마운트)
NFS를 사용하려면 클라이언트 시스템에서 서버의 파일 시스템을 마운트해야 합니다. 이를 확인하기 위해 df -h 명령을 사용할 수 있습니다.
- df -h 명령: 현재 시스템의 파일 시스템 사용량 및 마운트 상태를 보여줍니다. 이 명령을 실행하면 각 파일 시스템의 크기, 사용량, 남은 공간, 마운트 지점 등을 확인할 수 있습니다.
mysqld_safe
- mysql 실행하기 이전에 프로세스 구성상 문제가 있는지 확인 + 패스워드 잊었을때 안전모드에서 초기화가 가능하게 만들어줌
- mysql은 소캣 통신을 한다. (소켓파일은 최고권한을 가지고 있어야함) --> success or error log
- postfix : 메일 전송 에이전트(MTA)로, 이메일을 전송하고 수신하는 데 사용되는 소프트웨어, Postfix가 시스템 자원을 소모하는 불필요한 서비스
- qmgr : 매일 서버가 구동이 되고나서 메일을 주고 받기 위해 메시지 q 가 있어야 함
- apache : OS 안에 아파치가 포함되어있음
- crond : 주기적 예약작업
- atd : 단일예약작업
- certmonger : 모니터링하는쪽
- mingetty : 원격 연결에 대한 허용지점을 다수로 채널로 열어놓고 있는 것
- gdm : 서버가 GUI 환경이 감희된 것으로 구성이 된것이다. - 보통은 CLI 환경에서만 함
- gnome : 이거 보면 무조건 GUI 가 있다고 생각하면됌
- pam : 패스워드 복잡도 설정, 잠금 임계값을 관장하는 것
- sync 데이터 자체를 동기화하기 위함
- shutdown 버튼 눌렀을때 꺼지는거
- halt 강제종료
- lp (local printer): 계정이 존재하지만 로그인할 수 없는 상태 라서 nologin 파일(불필요한) 이 있어도 양호처리 한다.
- ntp : 시간 동기화 - 안되있으면 트레이싱 하기 불편해짐
로그인 가능계정 리스트업
cat /etc/passwd | grep bash
일반 사용자 권한
- RedhetLinux 6,7 계열 : UID 500 이상 일반사용자 계정
- RHEL 8 계열 : UID 1000 이상 일반사용자 계정
로그인 사용 기록을 확인
ls -al /root/.bash* /home/adiosl/.bash*