320x100

 

 

 

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 포트 스캔부터 시작, 정보 획득 → 예상 시나리오를 작성 → 동적 공격시도 → 취약점 식별
  • 그레이박스 (대상정보가 주어짐)
  • 화이트박스 (대상, 아이디패스워드를 발급해놓은 상태에서 함)

 

  1. OS = UNIX ( RACEL 계열 (AIX OS, HPUX OS, 오라클리눅스))
  2. DATABASE (mysql, mariaDB, 오라클, mssql) -데이터베이스가 구조화되어있다. / 몽고DB - no sql database - 구조화X
  3. WEB (아파치, 엔진x, iis, 넵툰)
  4. WAS (톰켓, 웹스피어, 제이보스, 와일드플라이, 제우스)

 

취약점 진단 방법론

 

- 취약점 진단 진행 과정

  1. 사전협의단계
  2. 정보수집단계

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)

 

  • 진단정보요청 
    1. 오픈포트분석 
    2. 데몬분석 
      • 포트가 오픈되어있는데 데몬(아파치나 엔진엑스)가 없다면 무슨말일까?
      아파치나 엔진엑스 서비스 중지라서 포트를 안닫았거나 처음부터 포트자체는 그대로 두고 아파치 엔진엑스만 데몬을 중지했구나 (다시구동할 수있다) , 삭제했던거라면 포트도 삭제했어야함
    3. 계정분석

 

일반사용자계정에 대한 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을 구동할 경우 다음과 같은 문제가 발생할 수 있습니다:

  1. 보안 취약점: 웹 서버가 root 권한으로 실행되면, 공격자가 취약점을 이용해 서버를 해킹할 경우 시스템 전체에 대한 접근 권한을 얻을 수 있습니다. 이는 데이터 유출, 시스템 손상 등의 심각한 보안 문제를 초래할 수 있습니다.
  2. 불필요한 권한: Apache는 일반적으로 웹 페이지를 제공하는 데 필요한 최소한의 권한만 필요합니다. root 권한으로 실행하면 불필요하게 높은 권한을 부여하게 되어, 의도하지 않은 작업이 발생할 위험이 있습니다.
  3. 서비스 중단: 웹 서버가 root 권한으로 실행 중일 때, 잘못된 설정이나 코드로 인해 서버가 중단될 경우, 전체 시스템에 영향을 미칠 수 있습니다.
  4. 감사 및 로그 추적 어려움: root 권한으로 실행되는 프로세스는 로그 추적 및 감사가 어려워질 수 있습니다. 이는 문제 발생 시 원인 분석을 복잡하게 만듭니다.

이런 이유로 Apache는 일반적으로 www-data와 같은 비특권 사용자 계정으로 실행하는 것이 권장

 

 


@@@@@중요@@@@@
UNIX 계열에서 Daemon을 설치하는 방법은 여러 가지가 있지만, 두 가지 일반적인 방법은 다음과 같습니다:

  1. YUM (Yellowdog Updater Modified):
    • YUM은 RPM 패키지 관리자를 사용하는 리눅스 배포판에서 소프트웨어를 설치하는 데 사용됩니다. YUM을 사용하면 리포지토리에서 패키지를 자동으로 다운로드하고 설치할 수 있습니다.

rpm -qa | grep httpd

 

이 정보를 통해 어떤 버전의 Apache HTTP 서버가 설치되어 있는지 확인할 수 있습니다

 

httpd-2.2.15-69

Major -Minor

 

 

2.  소스 코드에서 직접 컴파일 (git) 

 


rsyslogd는 리눅스 및 UNIX 계열 시스템에서 로그를 수집하고 관리하는 데몬입니다. 운영 체제의 로그는 크게 두 가지로 나눌 수 있습니다:

  1. 시스템 로그 (System Logs):
    • 운영 체제와 관련된 이벤트나 오류 메시지를 기록합니다. 예를 들어, 커널 메시지, 서비스 시작/종료, 하드웨어 오류 등이 포함됩니다. 일반적으로 /var/log/messages, /var/log/syslog와 같은 파일에 저장됩니다.
    • ex)message, lastlog, wtmp, utmp, btmp, cron 등등 
  2. 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*



300x250

+ Recent posts