320x100

시험

  1. 자산 관련 (자산 위협 취약성 ? )
  2. 위험평가는 안들어감

 

 

개인 정보보호 = “개인 연관된, 개인이 생산한 중요한 정보의 보호 = 프라이버시 

기업 정보보호  = “기업 연관된, 기업이 생산한 중요한 정보의 보호 = 기업비밀 

국가 정보보호  = “국가 연관된, 국가가 생산한 중요한 정보의 보호 = 국가기밀 

 

보안 컨설팅 프로젝트는 기업, 기관의 법률 준수 의무, 보안 사고 이슈, 상위기관 보안감사 등의 이유로  진행

 

정보보호컨설팅서비스영역> 주요정보통신기반시설취약점 분석 및 평가

  • 취약점 분석 평가란, 악성코드 유포, 해킹 등 사이버 위협에 대한 주요정보통신 기반시설의 취약점을 종합적으로 분석 및 평가.개선하는 일련의 과정

 

컨설팅 업무 절차

고객사 환경분석, 이해관계자 파악

  • 사업추진 배경 확인내부사고, 지시, 법적필수 
  • 사업 연관 이해관계자 파악 – Keyman 
  • 고객사 보고 문화, 보고서 스타일 파악 
  • 프로젝트 주관부서와  프로젝트담당자의 내부 부서와 관계 
  • 주관부서, 담당자의 권한정도 
  • 프로젝트 결과의 공유&보고 범위현업, 임원  

 

정보보호관리체계 (Information Security Management System)

 

정보통신망의 안전성 확보를 위하여 수립·운영하고 있는 기술적·물리 보호조치 종합적인 관리체계에 대한 인증제도  

정보 자산의 비밀을 유지하고 결함이 없게 하며 언제든 사용할 있게 보호 절차와 과정 

 

시스템 및 서비스 보안관리

  • 보안시스템운영 : Firewall, VPN, IPS, NAC, 서버보안, DB보안, 유해차단, APT방어, 메일보안, DRM, DLP  
  • 클라우드 보안 : Cloud 서비스에서 제공하는 보안설정 또는 서비스를 사용 
  • 공개서버 보안 : 홈페이지, 메일서버 DMZ 공개된 서비스를 보호하도록 설정(사설IP설정, WIPS, MAIL보안 ) 
  • 전자거래 핀테크보안 : 전자거래(결제, 송금 ) 대한 데이터 무결성 조치(데이터 변조체크, 암호화 ) 
  • 정보전송 보안 : 전송되는 구간에 데이터 암호화하여 전송 (서비스에 SSL 적용) 
  • 업무용 단말기기 보안 : 내부사용자가 개발, 서비스운영 등으로 사용하는 PC/노트북 등의 보안설정 (NAC, DRM, DLP) 
  • 보조저장매체 관리 : 업무용단말기에서 USB 사용하여 운영시스템에 접속하여 데이터를 빼내지 않도록 관리 (USB 차단, 보안USB사용) 
  • 악성코드 통제 : 업무용단말기, 서버 등에 백신설치 (PC백신, 서버백신, Viruswall) 

위험평가 

ISMS 관리체계 수립 과정의 필수 과정으로 정보자산 서비스 보안 측면에서 발생할 있는 부정적인 영향을 파악하여 효과를 최소화시키는 일련의 과정

 

  • 베이스라인 접근법 : 모든 시스템에 대해 표준화된 보안대책의 체크리스트 형태로 점검
  • 비정형 접근법 : 경험자의 지식을 사용하여 위험분석을 수행
  • 상세 위험분석 : 정립된모델에 기초하여 자산분석, 위협 분석, 취약성분석의 각단계를 수행하여 위험분석을수행
  • 복합 접근법 : 고위험영역을 식별하여 상세 위험 분석을 실시하고다른영역에 대해서는 베이스 라인 접근법을 사용

위험한 수준을 정량적으로 산정하기 위하여  취약점 심각수준, 자산의 중 요도,  위험의 발생가능성을 정량적으로 평가

 


 

KPI는 "Key Performance Indicator"의 약자로, 조직이나 개인의 성과를 측정하고 평가하는 데 사용되는 지표

  • CI (Customer Identification):CI는 고객 식별을 위한 고유한 값으로, 주로 금융기관이나 서비스 제공자가 고객을 식별하기 위해 사용합니다. CI는 일반적으로 고객의 개인정보를 보호하기 위해 주민등록번호 대신 사용되며, 특정 알고리즘을 통해 생성된 고유한 식별자입니다.
  • DI (Data Identification):DI는 데이터 식별을 위한 값으로, 특정 데이터나 정보를 식별하는 데 사용됩니다. DI는 데이터베이스에서 특정 레코드를 식별하거나, 데이터의 무결성을 유지하기 위해 사용될 수 있습니다.

Oracle 데이터베이스의 기본 포트 번호는 1521입니다.

 

제 6조 (개인정보암호화)

  1. 주민등록번호
  2. 여권번호
  3. 운전면허번호
  4. 외국인등록번호
  5. 신용카드번호
  6. 계좌번호
  7. 바이오정보 →>> 생체인식정보로 변경

정보보호산업의 진흥에 관한 법률 시행규칙

  1. 학사이상의 학위, 기사 또는 정보보호 관련 국내외 자격을 취득한 사람 → 초급인력으로 구분

File Detection System (파일 감지 시스템)

 

그룹웨어(Groupware)는 팀이나 조직 내에서 협업을 촉진하기 위해 설계된 소프트웨어

 

형상 관리(Configuration Management, CM)는 소프트웨어 개발 및 IT 시스템 관리에서 중요한 프로세스로, 시스템의 구성 요소와 그 변경 사항을 체계적으로 관리하는 방법

 

OLAP(Online Analytical Processing)는 데이터베이스 기술의 일종으로, 대량의 데이터를 신속하게 분석하고 복잡한 쿼리를 수행할 수 있도록 설계된 시스템

 

WAS(웹 애플리케이션 서버, Web Application Server)는 웹 애플리케이션을 실행하고 관리하는 서버 소프트웨어입니다. WAS는 클라이언트(주로 웹 브라우저)와 데이터베이스 간의 중개 역할을 하며, 웹 애플리케이션의 비즈니스 로직을 처리하고, 사용자 요청에 대한 응답을 생성합니다.

 

UPS(uninterruptible power supply) is a device that provides backup power to electronic equipment in case of a power outage or fluctuation.

 

위탁 → 수탁(위탁을 받은회사)

 


실습

시나리오를 참고하여 자산중요도 평가 보고서 작성

 

자산중요도는 confidentiality, integrity, availability 로 구분지어 평가

 

중요도 평가의 지표는 아래와 같다.

기밀성 자산이 유출되는 경우 회사에 막대한 금전적 손실이 발생할 수 있는 경우 3
자산소유자인 해당부서 또는 담당자만이 접근 및 관리 가능한 자산
자산이 유출되는 경우 회사에 상당한 금전적 손실이 발생할 수 있는 경우 2
자산소유부서/담당자 이외 관련부서 등 회사 조직 내부에 국한하여 접근 및 열람이 가능한 정보를 가지고 있는 자산
자산(정보)이 사외로 공개되어도 관계없거나 손실이 경미한 경우 1
회사 조직 외부인이 접근 및 열람이 가능한 정보를 담고 있는 자산
해당 자산(장비)에 별도 정보가 기록되어 있지 않거나, 공개되어도 무방한 경우
무결성 자산(정보) 변조 시, 업무수행 또는 서비스에 막대한 장애를 유발하거나 회사에 중대한 금전적 손실을 입히는 경우 3
자산(정보) 변조의 가능성이 높고, 변조 시 데이터의 무결성을 검증하기 힘든 경우
해당 자산 정보에 대한 실시간 백업이 이루어지지 않아, 원래의 정보를 복구하기 힘든 경우
자산(정보) 변조 시, 업무수행 또는 서비스에 부분적인 장애를 유발하거나 상당한 금전적 손실을 입히는 경우 2
데이터 변조의 가능성은 있으나, 데이터 변조 시 무결성 검증이 가능한 경우
임의의 무결성 검증 방법을 통해, 일정시간 내에 정보의 무결성을 복구 가능한 경우
자산이 변조되어도 업무 수행에 미치는 영향이 미흡한 경우 1
자산에 포함된 정보의 변조 가능성이 희박하고, 정보 변조 시 무결성 검증이 용이한 경우
가용성 자산(정보)의 가용성 훼손 시, 업무수행 또는 서비스에 중대한 장애를 유발하거나 회사에 막대한 금전적 손실을 입히는 경우 3
해당 자산이 사용 불가능할 때, 대체(백업) 자산이 없어 장기적인 업무 중단이 발생하는 경우
연중 24시간 무 중단 운영되는 자산(장비)으로서, 장애발생시 3시간이내 복구되어야 하는 경우
해당 자산(장비)에 대한 장애 또는 침해사고 발생시 직접적인 서비스 중단을 야기하는 경우
해당자산이 사용 불가능할 때 대체 자산을 투입하기까지 단기적인 업무장애가 발생하는 경우 2
연중 24시간 무 중단 운영되는 자산(장비)으로서, 장애 발생 시 24시간 이내에 복구되어야 하는 경우
장비 장애로 인하여 서비스 중단은 발생하지 않으나 성능에 영향을 미치는 경우
해당 자산이 사용 불가능할 때, 대체 자산을 즉시 투입하여 업무장애 발생 가능성이 낮은 경우 1
연중 24시간 무 중단 운영되는 자산(장비)으로서, 장애 발생 시 수일 이내에 복구되어야 하는 경우
장비 장애 시 서비스 중단 또는 성능 저하에 직접적인 영향을 미치지 않는 경우
백업 장비의 경우
300x250
320x100

# 시험 출제 
1. 계정 인증
    - 명령어 (뭘 하려면 뭘 확인해야 한다 객관식)
2. file 및 디렉터리 관리에서 특정 키워드 놓고 뭔지
    권한 확인 (객관식 낮은 난이도)
3. 서비스 관리
   - 아파치(난이도 중)
   - 오늘 강의를 제대로 들었다면 충분히 풀 것
   - 객관식
4. 서비스 관리 (주관식)
   - sendmail
5. 환경 분석(주관식)
   - 난이도 상

 


world writable : 타 사용자에게 쓰기권한이 부여된 파일을 의미 

 

 

 

 


- 컨설팅을 하던 진단을 하던 다 적용되는 내용이니 복습으로 숙지 요망
- 취약도 레벨 상은 1달 이내(시스템 진단, 인프라)
  - os 구성은 1달 이내 못함
    - 데이터베이스 암호화 
    - 복호화 하고 작업해야 함 
    - 보통 작업기간 1달 잡음
  
- 웹 api는 중요 취약점 _ 일주일 이내(특별한 케이스에선 즉시)
    - 금액, 개인정보
    - 웹 migration
    - back,front source code, 버전 정보, 

# 정리(추가 기재 필요)
- VLAN

## U-35
ls -al /etc/httpd/conf.d
가이드에는 include에 대한 부분은 언급이 안되어있습니다

![img.png](img.png)

## U-36
```
[root@localhost ~]# ps -ef | grep "httpd"
root      2171     1  0 Aug28 ?        00:00:09 /usr/sbin/httpd
apache    2736  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
apache    2737  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
apache    2738  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
apache    2739  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
apache    2740  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
apache    2741  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
apache    2742  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
apache    2743  2171  0 Aug28 ?        00:00:00 /usr/sbin/httpd
root      8116  8053  0 00:54 pts/0    00:00:00 grep httpd
```

- 불특정 다수가 서비스를 핸들링 함은 위험
- 필요한 권한만 허용
- root 계정은 booting script 때문에 먼저 구동

cat /etc/httpd/conf/httpd.conf | grep "User\|Group"| grep -v "#"
- 로그인이 불가능하도록 쉘 제한이 필수라는 항목에 대하여
    - cat /etc/passwd | grep apache
        - apache:x:48:48:Apache:/var/www:/sbin/nologin
        - 로그인 비허용
## U-37
- 웹 서비스 상위 디렉토리 접근 금지
- 이상적인 웹 서버는 세션값을 활용한 상,하위 이동
- 세션값 없이 이동을 하면 매번 id/pwd 확인 // 이를 강제하는 항목
### AllowOverride None


## U-38 
- Apache_home을 설치디렉토리
- 소스 디렉토리도 확인해야 합니다
- find /etc/httpd/ -name "htdocs" -exec ls -al {} \;
- find /etc/httpd/ -name "manual" -exec ls -al {} \;
- find /etc/httpd/ -name "egi-bin" -exec ls -al {} \;
- find /var/www/ -name "htdocs" -exec ls -al {} \;
- find /var/www/ -name "manual" -exec ls -al {} \;
- find /var/www/ -name  "egi-bin" -exec ls -al {} \;

## U-39
-  cat /etc/httpd/conf/httpd.conf | grep -C7 FollowSymLinks | grep -v "#"
- 3가지 링크의 followsymlinks가 활성화 되어있음 (진단서버에서는)

## U-40
- 파일 업로드 및 다운로드의 사이즈 제한 여부 점검
- OWASP Top 10
  - 다운로드의 가장 큰 취약점은 경로에 대한 노출
  - 인프라에서는 사이즈 제한으로 
- cat /etc/httpd/conf/httpd.conf | grep "LimitRequestBody"

### 
업로드 다운로드 가능 부분은 해당 경로뿐이고 
확장자 검증을 통해 업로드 다운로드 부분을 검증하고 있다
    라고 말하면 양호
### 
인프라베이스는
설정여부뿐만아니라 동적어플리케이션도 점검해야 하는 항목임을 숙지

## U-41
- 웹 서버의 루트 디렉터리와 OS의 루트 디렉터리를 다르게 지정하였는지를 점검
- cat /etc/httpd/conf/httpd.conf | grep DocumentRoot | grep -v "#"
- Default 디렉토리를 사용하는 경우 상위 디렉토리의 이동이 가능한 경우 Root까지 이동이 가능할 수 있기에 변경 권장

## U-60
- 원격 접속 시 SSH 프로토콜을 사용하는지 점검
- telnet과 ssh의 차이점
  - 인증 여부
### 실습


## U-63
- FTP USR의 권한을 확인하는 항목

## U-64
- ftpusers 파일 root 계정 포함 여부
- 다른 계정이 추가되어 있다면 인터뷰 받아야 함
  - 인터뷰의 가장 큰 목적 : 증적
### ISMS-P
- 정보자산에 대한 취약점 진단 : 취약점 진단이 ISMS-P에서 하는 유일한 일
  - 나머지는 컨설턴트가 수행
- 컨설턴트는
  - 위험도 평가 보고서
  - 조치 계획서 수립

## U-65
-  at : 단일 예약 작업

## U-66
- SNMP 서비스 활성화 여부 점검
- 장비 진단에서 SNMP 버전, Community string
### 네트크 가상머신 툴
- CISCO packet tracer
### 실습
- Community String값은 default 값을 모두가 알고 있기에 반드시 수정 필요
  - 권한 2가지 : Read, Write
  - SNMP는 가지고 있는 정보만 던져주면 되니까 RO만 있어도 됨(ReadOnly)

SNMP 000000000000000버전 1,2는 취약점 존재 -> 버전 3 채택 필수

### VLAN
- VLAN 왜 사용할까
- L2 L3는 스위치
- L4는 라우터 왜 사용할까
  - 경로 전달, 라우터를 백본이라고 함
  - 1U (네트워크 렉, 나사가 들어가는 3개의 열을 1U라고 함)
  - 8U는 나사 라인이 24개
- VLAN이란 ? 
  - 정리 요망 (~에서 ~을 나누어 놓은 것(기억안남))

## U-67
- SNMP Community String 복잡성설정 여부 점검

## U-68
- 저희는 이걸 배너라고 해요
- 로그인을 할 때 위험성을 알려주는 것
- 목적
  - 버전정보, 어떤 플랫폼 사용하는지 노출 X
  - 사회공학적 기법 : 경고가 붙어있는데 출입한 경우는 처벌의 수위가 달라집니다.
### 로그인이 가능한 서비스
- Telnet, ssh, sendmail, postfix
- ps -ef | grep "telnet\|ssh\|sendmail\|named\|ftp"
```shell
[root@localhost ~]# ps -ef | grep "telnet\|ssh\|sendmail\|named\|ftp"
root      1887     1  0 Aug28 ?        00:00:00 /usr/sbin/sshd
root      8049  1887  0 00:43 ?        00:00:04 sshd: root@pts/0
root      8584  8053  0 04:10 pts/0    00:00:00 grep telnet\|ssh\|sendmail\|named\|ftp
[root@localhost ~]# cat /etc/motd
TEST Server 접근시 허용된 계정만 접근이 가능하며
그외 비인가된 계정은 접근하실 수 없습니다.
```
- named는 DNS 

#### 
- 최신 보안 패치는 버전 커버리지와 보안 취약점을 계속해서 확인해야 합니다
- 보안뉴스 꼭 챙겨보길
  - cv 주요 취약점은 계속해서 발생합니다
  - Rocky OS << 새로 나오면 새로 가이드 작성
## U-69
- NFS의 설정파일은 exports
- NFS 접근제어 설정파일에 대한 비인가자들의 수정제한 여부 점검
## U-70
- smtp 서비스 사용시 crfy, expn 명령어 사용 금지 설정 여부 점검
- /etc/mail/sendmail.cf
  - O PrivacyOptions - (noexpn,novrfy 또는 goaway)

## U-71
- 웹 페이지에서 오류 발생 시 출력되는 메시지 내용 점검
-  cat /etc/httpd/conf/httpd.conf | grep "ServerTokens\|ServerSignature"
- ServerTokens
- SiverSignature
- 키워드 prod로 하면 Apache로 나옴
  - Apache도 보여지지 않고 싶으면 ? 
    - mod security 모듈 설치 후
    - 설정 파일에 SecRuleEngin 등 설정 파일을 변경하면
    - Custumize된 값으로 표시
## U-42
- 시스템에서 최신 패치가 적용되어 있는지 점검
- 주요하게 CV취약점이 발생되는 데몬을추려서 버전확인 필요
### 
- openssh
- bash
- named
  - bind 취약점 발생 가능
- glibc
- 로그인 가능(인증 인가 서비스 거부 공격 가능)
  - ftp
  - sendmail
  - openssl
    - 인증서 적용을 하기 위해 필수로 필요한 패킷
    - https
###
- 현재 구성된 서버의 OS가 "CentOS 6.9" 버전으로 "XXXX년 XX월 XX일" 기준으로 EOS(End Of Service)되어 CVE 주요 취약점이 발생될 수 있는 필수 데몬(openssh, glibc, openssl 등)의 최신 패치를 적용할 수 없는 상태입니다.
- major 버전, 6.9 _ 6 이 바뀌면 업데이트 못함
- 데이터 부분 다 백업하고 서버업데이트 후 migration해야 합니다
###
- ad : active directory
  - 사용자와 컴퓨터 그룹이 존재
###
- 언제까지 조치하겠다는 내용 필수
- 심사는 올해만 하고 끝이 아니라 최초진단을 3년 이내로 다시 받게 곧 변함
- 신규 서버의 구축 완료기간, Data Migration 완료 기간을 산정해서 보안담당자에게 확인을 받고 이를 결과보고서 내 Comment로 기입해야 함

## U-43
- 로그의 정기적 검토 및 보고 여부 점검
- rsyslog의 로그는 크게 2가지 
  - systemlog
  - sulog
- ls -al /var/log
- log를 서버에 함께 저장하면
  - tracing이 안되며
  - 무결성이 훼손된다
- 가이드에 로그 분리와 관련된 내용은 명시되어있지 않음
### 알고 계세요 
- 1. 로그 저장에 대한 최소 보관 기준(최소 6개월)
- 2. 로그를 시스템 및 서비스 내 보관하지 않고 별도 공간보관하고 있는지 유무 확인
- 3. 로그에 대한 정기적인(Monthly) 검토 및 감사를 통해 안전하게 관리하고 있는지 유뮤확인
- 4. 별도 공간에 보관중인 로그 및 시스템/서비스 내 보관 중인 로그를 타사용자가 수정할 수 있는 권한이 있는지 유무
### edr 솔루션

## U-72  
- 내부 정책에 따른 시스템 로깅 설정 적용 여부 점검
- 정책이라 함은 ? 
  - Emergency [emerg]
  - alert [alert]
  - 등
    | 우선순위 | 심각도 | 설명                                                                  |
    |---|---|---|
    | 4 | Emergency | 매우 위험한 상황으로 즉각적인 조치가 필요함.                                 |
    | 3 | Alert     | 즉각적인 조치를 취해야 할 상황으로 시스템에 심각한 영향을 미칠 수 있음.            |
    | 2 | Critical  | 하드웨어 또는 소프트웨어에 심각한 오류가 발생하여 시스템이 불안정한 상태임.        |
    | 1 | Error     | 프로그램 실행 중 예상치 못한 오류가 발생하여 기능이 제대로 작동하지 않음.    |
    | 0 | Warning   | 시스템에 문제가 발생할 가능성이 있으므로 주의가 필요함.                    |
    | -1 | Notice    | 시스템에 문제가 발생하지는 않았지만 사용자에게 알려야 할 사항임.              |
    | -2 | Information | 프로그램에 대한 일반적인 정보를 제공하는 메시지임.                     |
    | -3 | Debug     | 프로그램 디버깅 과정에서 발생하는 오류 메시지로 일반 사용자에게는 불필요함. |
### info
- alert까지 포함 가능
- alert이 없는데 취약으로 잡으면 보안담당자들한테 욕먹음
- cat /etc/rsyslog.conf | grep -C3 "cron" | grep -v "#"

- ls -al /var/log/wtmp* /var/log/utmp* /var/log/btmp* /var/log/lastlog* /var/log/secure* /var/log/messages*
  - *를 찍어야 날짜까지 포함된 파일명도 볼 수 있습니다
  - 로그는 타사용자에게 권한이 없어야 합니다
  - cat /etc/httpd/conf/httpd.conf | grep "ErrorLog\|CustomLog" | grep -v "#"
- 주요정보통신기반시설점검 가이드는 굉장히 비실용적인 가이드(by 강사님)

multiviews 이중확장자 차단 < 업로드 가능

## SSL Poodle 취약점
- SSL 3.0, 2.0은 Poodle 취약점 발생 가능
- TLS 1.0/ 1.1/ 1.2/ 1.3
- 크롬, 엣지에서 어떠한 버전부터 지원할까(TLS)
  - 1.2
  - 이전 버전은 암호화키 변조, 해독이 가능하기 대문
- 발급받은 도메인에 SSL 적용해서 웹사이트에 올리면?
- 도메인, 인증서 서비스 모두 발급할 때 받음
  - 
- 취약 패스워드
  - 
## ssh 접근 외의 2가지 접근 방법
- vnc
- RDP
### 서버는 터미널로만 접근해야 한다
 - 다른게 설치되어있으면 해당 내용은 취약으로 가져가야 함

## 클라우드 취약점 보안 가이드
- KISA
- 내꺼 배낀거다(by 강사님)



# mysql 
- mysql -u root -p
- 데이터베이스는 인터뷰 항목이 굉장히 많습니다
## D-01
- DBMS 기본 계정의 디폴트 패스워드 및 권한 정책을 변경하여 사용하는지 점검

## D-03
- 기관 정책에 맞게 패스워드 사용기간 및 복잡도 설정이 적용되어있는지 점검
- 기관정책 : 고객사의 사내정책
  - Password Lifetime : 사용기관과 복잡도 설정에 대한 오라클의 정책
    - -PASSWORD_LIFE_TIME
  - mssql은 윈도우에서 사용
    - 윈도우는 사용자 계정이 두가지로 나뉨
      - local
      - ad(관리자)
    - 로컬이던 관리자던 윈도우는 특정 방식의 인증을 사용합니다
    - ntml
    - 
- 화살표가 아래로 향한 계정
  - 계정을 사용하지 않는 다는 의미
  - 로그인 안됩니다
  ![img_1.png](img_1.png)

# D-04
- 관리자 권한이 필요한 계정에만 권한이 부여된 경우
- mysql에서 뭐가 관리자 그룹인가?
  - select hset,user,select_prev from mysql.user
  - mysql은 그룹과 계정을 개별로 사용하지 않음
    - 내용을 구분해서 확인하기 어려움
## 원격에서 DB서버로의 접속을 제한하고 있는지

# D-12
- 패스워드 변경 시 이전 패스워드 재사용할 수 없도록 제약설정이 되어있는지

# D-13
- DB접근 시 사용자 별로 서로 다른 계정을 사용하여 접근하는지
- select host,user,db,select_priv from mysql.db

# D-05
- 지정된 IP 주소만 DB서버에 접근 가능하도록 설정되어 있는지 점검
- DB 접근 제어
- 192.168.10.%
  - %(any) 들어가면 취약
  - 추가 인터뷰는 받아야 함 
    - DB접근제어 솔루션을 사용하는지 확인
# D-06
- DBA 이외의 인가되지 않은 사용자 시스템 테이블에 접근할 수 없도록 설정

# D-07
- Oracle
- Listener 패스워드 사용
## D-08 
- 사용하지 않는 불필요한 ODBC 데이터
- 비밀번호 시도횟수 대부분 설정 안하지만 '취약'

# D-16
- 사용자 계정의 umask 설정이 022 이상으로 설정되어 있는지 점검

# D-17
- 데이터베이스의 주요 파일들에 대해 관리자를 제외한 일반 사용자의 
- my.cnf // mysql의 환경변수파일
- 권한 확인
- ls -al /etc/my.cnf

# D-18
- 리스너 관련 설정  파일의 권한을 관리자만 가능하게 하고 리스너 파라미터 변경 방지에 대한 옵션 설정 여부 점검
- 실제 소유자와 그룹소유자만 확인할 수 있게 설정

# D-08
- 데이터베이스 개발자한테 인터뷰

# D-09
- rule이 false로 설정되어 있는지 확인하면 되는 간단 학목

# D-19
- password verify function

# D-20


# 사설
- 주요정보통신기반시설만 갖고 Database를 진단하기는 불가능
- 실무에 대한 이해 필수
# D-21
- 여기서 말하는 Grant Option은 
  - 권한을 이양할 수 있다 // root 계정한테만 허용해야 함

# D-22
- sk쉴더스에서는 안봅니다 (이유는 말 안해주심, 왜 하는지 모르겠는 항목이라고 하심)
- 리소스에 대한 리미트 설정이 트루인지 false인지만 확인
# D-10
- 최신 패치 및 벤더 권고사항 적용 여부 점검
- mysql은 repository를 통해 설치했습니다 (실습 환경에서)
- EOS의 경우 OS 버전을 신규로 구축하라는 권고
# D-11 
- 감사기록 정책 설정이 기관 정책에 적합하게 설정되어 있는지 점검

# D-23
- 보안에 취약하지 않은 버전의 데이터베이스를 사용
- 항목의 의의는 최신버전인데 기재되어있는 기준 버전은 굉장히 오래된 계정
- 따라서 진단 시점을 기준으로 최신 버전을 기준으로 하기를 권장

# D-24
- Audit Table 접근 권한이 관리자 계정으로 제한되고 있는지 점검

# 사담
## 개발 시스템과 운영 시스템의 분리

## 백업 왜 
- 연속적으로 서비스 제공
## ec2 백업 방법
- 스냅샷


# 윈도우
## Ftp
- 윈도우에서 ftp는 서비스일까 기능일까
- 기능임
### 윈도우에 FTP를 올리는 2가지 방법
#### IIS 기반(가장 많이 사용)
- IIS에 올라간 기능
- IIS란 : Internet Information services
  -웹 사이트를 운영하기 위한 필수적인 도구
####

## 텔넷 : 기능
- windows 기능 켜기/끄기 에서 
  - 텔넷 클라이언트로 켜기 가능

## OWA 
- 사서함 메일을 웹 페이지 형태로 보여줌
- IIS가 보여줌

## IIS 
- IIS 기반의 기능을 다 확인해야 함

## 업로드 찾는 방법
- 탐색 _ 해당 웹 소스의 상위 디렉토리 확인 가능
### 업로드 될 수 있는 파일
- *.png OR *.pdf
- 스크립트가 보관된 디렉토리를 찾기 위해서는 확장자로 검색해라


300x250
320x100

악성코드(Malware) 

  • OS 속에서 악의적인 행위를 하는 프로그램 전체를 일컫는 말

악성코드 종류

행위에 의한 분류

  1. 바이러스 : 네트워크로 공유된 컴퓨터 프로그램이나 실행영역을 변형해 복제하는 프로그램
  2. 스파이웨어 : 사용자환경의 브라우저 정보, 시스템정보, 뱅킹정보 등을 탈취하는 악성코드
  3. 트로이목마 : 정상 프로그램으로 위장, 악의적인 공격코드의 실행을 유도하는 악성코드
  4. 웜 : 네트워크를 통해 전파되면서 자가복제를 통해 네트워크 트래픽에 영향을 미치는 악성코드

목적에 의한 분류

  1. 백도어 
    1. 하드웨어 및 펌웨어, 소프트웨어 등에 비정상적인 인증과정으로 원격에서 접근 가능한 악성코드
    2. 비인가된 인증과정을 통해 원격으로 명령어 실행 및 보안 프로그램 우회 등 재침입의 경로로 활용
  2. 다운로더
    1. 시스템에 접근하여 권한을 획득 한 후 추가 악성코드를 다운로드하는 목적으로 사용되는 악성코드
    2. 시스템 접근과정에서 백신의 탐지 가능성을 낮추고 악성코드 설치율을 높이기 위한 방법으로 사용
  3. 인포스틸러
    1. 시스템 정보 및 뱅킹, 브라우저 등 감염된 시스템의 정보를 수집하는 악성코드
    2. 개인의 경우 정보탈취 및 금전피해 유발, 국가 및 조직의 경우 민간정보 탈취가 주요 목적
  4. 키로거
    1. 사용자가 입력한 키 값을 가로채서 행위의 기록을 탈취하는 악성코드
    2. 사용자가 직접 입력한 기록을 가져가기 떄문에 뱅킹정보와 같은 정보를 주로 목적으로 함
  5. 랜섬웨어
    1. 파일이나 드라이브를 암호화하여 복호화를 빌미로 금전을 요구하는 악성코드
    2. 초기에는 암호화 기능만 수행하였으나, 정보탈취 DDoS등 다중협박 전략으로 피해자를 압박해 협상금액을 높이는 형태로 발전
  6. 루트킷
    1. 관리자 권한인 루트 권한을 갖게하는 킷으로 프로세스나 레지스트리를 숨기거나 삭제할 수 없도록 하는 악성코드

 

 

사이버 킬체인(Cyber Kill Chain)

  • 사이버 공격을 각 단계 별 위협 요소 파악 및 공격 방법 정의분석모델
  • 공격 단계를 미리 예측하여 공격 효율성 낮추고 피해 최소화 목적
  1. 정찰
  2. 제작 (악성코드분석)
  3. 전달
  4. 취약점 공격
  5. 설치
  6. 명령&제어
  7. 행동

 

트로이목마

 

RAT (원격 접근 트로이목마) 악성코드

  • 해커가 감염된 시스템에 원격으로 접근할 수 있게 해주는 악성코드입니다.

백도어(BackDoor)

  • 백도어 악성코드를 이용한 원격 제어
  • 공격자가 웹사이트, 이메일 등 다양한 경로를 통해 정상 파일 위장 실행 유도
  • 피해자(Victim) 위장 파일 실행 시 PC 악성코드 감염

애드웨어(Advertisement + Software)

  • 사용자 동의없이 화면 내 광고가 노출되는 행위
  • 광고 게시하여 수익을 얻는 것이 목적
  • 프로그램 설치 과정에서 동의를 구한 후 자동 설치
  • 웹 페이지 접속 시 상단 또는 하단에 광고 배너가 표시

스파이웨어 (Spy +software)

  • 사용자 동의없이 개인정보 수집 및 모니터링하는 행위
  • 링크파일 악성코드 (바로가기 파일) 언제 어디서나 해당파일을 링크걸어서 다른경로에 있는 파일을 동작시키게 하는 것 - 링크파일 안에 악성코드를 삽입을 시킨다. 근데 악성코드만 삽입하는게 아니라 정상문서까지 같이 삽입을 시킨다.

스피어피싱

  • 특정대상을 정하여 사기 메시지로 사용자를 속이는 행위

취약점 공격(Exploit)

  • 타겟 장비가 가지고 있는 취약점으로 침투하는 행위
  • 취약점 공격 성공 시 액세스 확보 및 시스템 제어
  • 시스템 제어, 원격 코드 실행, 추가 악성코드 삽입 등

악성코드 분석 방법론

평판조회 사이트

  • 전세계 백신 업체 엔진을 한 곳에 모아 확인 가능
  • 악성코드 및 악성URL 업로드 시 스캔 엔진으로 결과 도출

악성코드 자동 분석 사이트 활용

  • 샌드박스 플렛폼 (내가 분석하고자 하는 것에 대한 환경설정, 분석 기간에 대한 시간정보, 어떤 브라우저 및 응용프로그램을 사용할지 분석하는 설정 가능) 하는 것을 솔루션으로 제공하고있음
  • 악성코드 및 악성URL 을 온라인환경에서 안전하게 실행
  • 영역별로 상세한 스냅샷으로 구간별 악성코드 행위 확인 가능
  • AnyRun

악의적인 프로그램 분석하는 방법

  1. 정적분석 : 악성코드로 의심되는 파일을 가상환경에서 실행하지 않고 분석하는법 ( 파일의속성정보, 컴파일정보, 문자열 정보)를 파악하는 초기 단계
  2. 동적분석 : 파악한 속성정보를 베이스로 동적으로 실행 → 분석
  3. 분석한 자료로 코드레벨(code reverse engineering) -코드 역공학 분석 -? 대화형 동적분석

 

  1. 파일분석 : 파일형태분석, API분석, String분석
  2. 증상분석 : 파일시스템분석, 프로세스↔쓰레드 (프로세스 관계), 레지스트리(윈도우의 DB) - 어떤식으로 벨류값을 쓰는지), 네트워크분석
  3. 정보분석
  4. 코드분석
  5. 패턴제작 : 예방대응책으로 스누투룰, 야라룰로 패턴을 제작 → 방화벽에서 차단, IPT 보안장비에 정보를 등록해서 예방

정적분석정의

  • 악성코드를 실행하지 않은 상태에서 분석
  • 헤더 정보와 내부 문자열, 실행 압축 여부, 등록 정보 등을 통하여 동작을 파악
  • 디스어셈블러를 이용하여 내부 코드와 구조를 확인 후 연관성 파악

동적분석정의

  • 악성코드를 직접 실행하여 행위 관찰
  • 파일, 레지스트리, 네트워크 등을 확인하며 동작 행위 분석
  • 디버깅을 통해 코드 흐름과 메모리 상태를 직접 확인

정적분석

  • 컴파일 정보 확인 (어떤 언어로 컴파일이 되었는지 파악)
  • 실행압축 여부 확인
  • 문자열확인
  • 파일 무결성 확인
  • 지속성 유지 확인 Autoruns(악성코드 분석 또는 침해사고 분석에서 사용된다) → (Logon, services, scheduled tasks 확인)
  • Thunderbird 활용

PEStudio 활용

  • 윈도우 OS용 악성코드는 전세계 약 65% 비중 차지

Process Explorer 도구 인터페이스

CPU 사용률

PID (process ID) 해당 프로세스가 생성된 시점에서 부여받은 프로세스 고유 식별번호

Description

동적 분석

  • 파일 시스템 변화 관찰(파일모니터를 통해서 관찰)
  • 레지스트리 변화 관찰
  • 네트워크 변화 관찰

process monitor 도구

홈페이지 통한 공격 과정

 

 

 

 


 


- 공공기관 정부처

# 서론
관제 2년 + 악성코드 분석 
하나의 침해사고로 3개월 이상 악성코드 분석중

# 1. 정의 및 유형
## 1.1 악성코드란 무엇인가
- Malicious Software
- 악성 행위를 하는 SW

## 1.2 악성코드의 목적
- 최근들어 국가 안보 위협 악성코드 증가(80% 이상)
- 전세계 80% 이상 공격에서 이메일이 사용됩니다

## 1.3 피해 사례
- 다크사이드(러시아 해킹 그룹)의 송유관 해킹

## 1.4 악성코드 유형
- 행위에 의한 분류
- 바이러스 
- 네트워크로 공유된 컴퓨터를 포함한 컴퓨터 프로그램이나 실행영역을 변형해 복제하는 프로그램
- 스파이웨어 
- 사용자환경의 브라우저 정보, 시스템정보, 뱅킹정보 등을 탈취하는 악성코드
- 트로이목마 
- 정상 프로그램으로 위장하여 악의적인 공격코드의 실행을 유도하는 악성코드
- 웜 
- 네트워크를 통해 전파되면서 자가복제를 통해 네트워크 트래픽에 영향을 미치는 악성코드
- 목적에 의한 분류
- 백도어 
- 하드웨어 및 펌웨어, 소프트웨어 등에 비정상적인 인증과정으로 원격에서 접근 가능한 악성코드(딥 문을 뚫어놓는다)
- 비인가된 인증과정을 통해 원격으로 명령어 실행 및 보안 프로그램 우회 등 재 침입의 경로로 활용
- 다운로더 
- (네트워크를 통해 공격대상에 접근하여 다음 stage로 넘어가기 위해 추가적인 파일을 받는 행위를 총칭)
- 시스템에 접근하여 권한을 획득한 후 추가 악성코드를 다운로드하는 목적으로 사용되는 악성코드
- 시스템 접근과정에서 백신의 탐지 가능성을 낮추고 악성코드 설치율을 높이기 위한 방법을 사용
- 인포스틸러 
- (최근 보안업체 분석보고서를 보면 대부분이 인포스틸러)
- (크롬, 브라우저의 인증정보 수집)
- 시스템 정보 및 뱅킹, 브라우저 등 감염된 시스템의 정보를 수집하는 악성코드
- 개인의 경우 정보 탈취및 금전피해 유발, 국가 및 조직의 경우 민간정보 탈취가 주요 목적
- 키로거 
- (윈도우 API 함수를 탈취해서 입력값 탈취)
- 사용자가 입력한 키(key)값을 가로채서 행위의 기록(Log)를 탈취하는 악성코드
- 사용자가 직접 입력한 기록을 가져가기 때문에 뱅킹정보와 같은 정보를 주로 목적으로 함
- 랜섬웨어
- ( 최근에는 PC는 정상적으로 작동되게끔 중요파일만 암호화 ) 
- 파일이나 드라이브를 암호화하여 복호화를 빌미로 금전을 요구하는 악성코드
- 초기에는 암호화 기능만 수행하였으나, 정보탈취 및 DDos등 다중협박 전략으로 피해자를 압박해 협상금액을 높이는 형태로 발전
- 루트킷 
- 관리자 권한인 루트(Root)권한을 갖게하는 킷(Kit)으로 프로세스나 레지스트키를 숨기거나 삭제할 수 없도록 하는 악성코드

### 사이버 킬체인(p9)
- Cyber Kill Chain
- 사이버 공격을 각 단계 별 위협 요소 파악 및 공격 방법 정의 분석 모델
- 공격 단계를 미리 예측하여 공격 효율성을 낮추고 피해 최소화 목적

#### 단계
- 정찰
- 제작
- 전달
- 취약점 공격
- 설치
- 명령&제어
- 행동


### 1.4 악성코드 유형
#### 트로이 목마(Trojan)
 - 정상 프로그램이나 파일로 위장한 후, 보안망을 뚫고 사용자 시스템에 침투
- APT(Advanced Persistent threat) 공격에 주로 사용

#### 백도어(BackDoor)
- 정상적인 인증을 우회하여 시스템 내부에 침투
- 공격자가 언제든지 시스템에 침투할 수 있도록 비밀 통로 개설
- 로그를 남기지 않는 것이 특징
- 다양한 악의적 목적으로 사용
- Remote Access Tool(RAT)가 아직까지도 성행
- 굉장히 체계화되어 컴퓨터를 잘 모르는 일반인도 사용 가능

#### 애드웨어(Advertisement + software)
- 사용자 동의없이 화면 내 광고가 노출되는 행위
- 광고를 게시하여 수익을 얻는 것이 목적
- 프로그램 설치 과정에서 동의를 구한 후 자동 설치

#### 스파이웨어(Spy + Software)
- 사용자 동의없이 개인정보 수집 및 모니터링하는 행위
- 키보드 입력, 인터넷 사용기록, 신용카드 정보 등 다양하게 정보 수집
- 주로 특정 대상을 타게팅 후 은밀한 방식으로 악성코드 설치
- 이메일, 메신저, SNS 등 다양한 경로를 통해 설치 유도

![alt text](image.png)
- 링크파일(디코이 파일)
- 다른 경로에 있는 파일을 동작시키기 위한 파일
- 악성코드와 정상문서를 함께 삽입

- bin
    - 디스크에 남아있어 탐지하기 쉬움
    - 이를 최근에는 우회하고자 bin파일이 아닌 메모리에 바로 악성코드 적재하는 경향
#### 랜섬웨어(Ransom + Software)
- 컴퓨터 파일 암호화 후 금전적 보상 요구
- 기기 취약점을 통해 침투하여 볼륨 쉐도우 카피 정보 손상
    - 볼륨 쉐도우 : 디지털 파일이나 데이터의 스냅샷
        - for 복구, 복원


#### 피싱(Phishing)
- 사기 메시지로 사용자를 속이는 행위
- 전자 메일, 문자, SNS, 웹사이트 등 다양한 수단 사용
- (피싱 서버에 침투하여 피해 범위, 규모 확인 후 전파)
#### 스피어피싱(SpearPhishing)
- 특정 대상을 정하여 사기 메시지로 사용자를 속이는 행위
- 전자 메일, 문자, SNS, 웹사이트 등 다양한 수단 사용
- 지인 사칭, 답변 시 2차 메일로 첨부파일 위장 링크 삽입

#### 취약점 공격(Exploit)
- 타겟 장비가 가지고 있는 취약점으로 침투하는 행위
- 취약점 공격 성공 시 액세스 확보 및 시스템 제어
- 시스템 제어, 원격코드 실행, 추가 악성코드 삽입
- 모의해킹 공부는 CVE 취약점 분석 추천

![alt text](image-1.png)

# 2. 악성코드 분석 방법론
## 서론
### 평판 조회 사이트 활용
- Virustotal.com
    - 로그남음, 유료회원에게 공유됨
- Hybrid-Analysis.com
- 100%는 아님, 해석 필요
### 악성코드 자동 분석 사이트 활용
- JoeSandbox, Any.Run
- 악성코드 및 악성URL을 온라인환경에서 안전하게 실행
- 영역별로 상세한 스냅샷으로 구간별 악성코드 행위 확인 가능

#### 프로세스
![alt text](image-2.png)
- 정적분석을 통해 개략적인 정보 파악 후 동적분석(간단분석)
- 이후 리버싱, 대화형 동적 분석을 통한 상세분석

## 2.1 정적 분석
### 2.1.1 컴파일 정보 확인
- Detect it Easy : 현업에서도 주로 사용되는 도구
![alt text](image-3.png)
- 모든 파일에는 시그니처(Magic Number)가 존재합니다
- 윈도우에서 실행가능한 파일은 4d 5a
    - doc,xlxs,ppt 등 ms word형 파일은 pk(심볼)
    - 압축 포맷은 지배 확장자를 따릅니다
    - 매직넘버를 기반으로 파일 유형을 파악하고 다음단계를 진행합니다

### 2.1.2 실행압축(Packing) 여부 확인
- Packing : 개발자가 코드를 역으로 분석하지 못하게 하기 위한 목적
- 압축 알고리즘 : UPX, VMProtect, Thimida
- 악성코드에도 Packing을 적용하는 경우가 많습니다
- Detect It Easy 등 정적분석 도구를 사용해서 패킹 여부/ 패킹 알고리즘을 확인할 수 있습니다.
![alt text](image-4.png)

### 2.1.3 문자열(String)확인
![alt text](image-5.png)
- Compile된 파일 안에 hardcoding된 문자열들이 보이는 경우도 있습니다.(과거)
- 윈도우 API 함수도 보일 수 있습니다

### 2.1.4 파일 무결성 확인
- 암호화 알고리즘(MD5, SHA, AES 등) 통해 파일 고유 식별 정보 확인
- 윈도우 디렉터리에 존재해야 할 파일이 이상한 위치에 숨김파일로 존재할 경우 무결성 확인

#### 2.1.5 지속성 유지 확인
- 악성코드가 일회성인지, 지속적으로 동작하는지 확인 필요
- Autoruns : 프로그램
    - syseternals : 분석도구를 개발했던 단체, 지금은 MS로 흡수되어 해당 프로그램 개발
    - 악성코드의 경로를 확인할 수 있어 CERT에서 주로 사용합니다
    - 
#### 2.1.6 정적 분석 도구
- PEStudio(윈도우용)
    - 악성코드의 65% 이상은 윈도우 악성코드
        - 따라서 윈도우 악성코드 분석 도구도 많습니다
    - PE 구조, 문자열, Hash 값 등 다양한 정보 확인 가능
![alt text](image-6.png)

- Thunderbird(모질라) 활용(또는 outlook my ms)
    - .eml
    - 메일을 pc에 저장하면 확장자가 eml
    - eml 파일을 thunderbird로 동작시키면
    - 공격자 정보, 유포지, 악성 파일 등 다양한 정보 확인 가능
    - 전세계 악성코드 80% 이상 정자메일을 통해 유포
    - 주소를 교묘하게 위장하는 방법도 많이 쓰임
        - (0, O) / (rn, m)
        

## 2.2 동적 분석
### 2.2.1 프로세스 변화 관찰
- 모든 악성코드 행위에는 프로세스가 존재합니다
- 시스템 내 발생하는 실시간 프로세스 변화에 대한 분석이 필요합니다
- 부모, 자식 프로세스 연결 고리, 코드 인젝션, 명령어 실행 등 
- Process Explorer : MS 제공 도구
    - 작업관리자의 확장판
    - 종료된 프로세스의 악성코드를 보려면
        - Log 확인
        - 실시간 관찰 용도이기에 Process Explorer은 로그 관찰 불가
- Process monitor
    - 종료된 프로세스도 관찰 가능(흐릿하게 표시)
- Process Hacker

#### Process Explorer 도구 인터페이스
![alt text](image-7.png)
- dll 경로가 숨김/임시일 경우 악성코드 의심

![alt text](image-8.png)
- thread, TCP/IP, String 탭 주로 사용

#### Process monitor
- Process explorer을 실행하지 않고도 Process monitor로 대부분의 요소 관찰 가능
- 캐쉬의 리소스를 엄청나게 잡아먹는 단점이 있습니다.
    - 때문에 악성 프로세스만 필터링을 통해 특정하여 관찰하는 경우가 많습니다


### 2.2.2 파일시스템 변화 관찰
- OS 내 현재 동작 중인 파일 상태 실시간 확인
- 악성코드 실행 후 파일시스템 내 변화를 체크하는 과정이 매우 중요
### 2.2.3 레지스트리 변화 관찰
- 지속성을 유지하기 위해 레지스트리를 변경하는 경우가 많습니다.
- 시스템 레지스트리 조작하여 원하는 정보 입력 가능
- 중요 레지스트리 삭제 후 보안 설정 우회 등 다양하게 활용
- 악성코드 주요 레지스트리 변경 확인 여부 중요

### 2.2.4 네트워크 변화 관찰
- 와이어샤크 : 분석 툴
    - 패킷을 전부 stream으로 볼 수도 있고 inbound 패킷의 데이터 영역만 추출할 수도 있다는 장점이 있습니다.
- 최근 악성코드는 정보 수집 및 추가 파일 업로드를 위해 네트워크 이용
- 공격자 서버(C&C서버) 통신 실시간 확인 필요

#### Process Monitor 도구
- 프로세스의 레지스트리, 파일, 프로세스/쓰레드, 네트워크 동작 등을 실시간으로 캡처하는 프로그램
- 레지스트링 활동, 파일 시스템 활동, 네트워크 활동, 프로세스와 스레드 활동, 이벤트 프로파일링 등  모니터링 기능 지원

- 리소스를 굉장히 많이 사용하기에, 처음부터 사용하는 경우는 거의 없고 돋보기 아이콘을 통해 특정 프로세스 등으로 범위를 좁힌 후 사용합니다.

<hr>

![alt text](image-9.png)
- capture : 현재 상태 캡쳐
- autoscroll : 최근 활용한 프로세스 목록 이동
- clear : 프로세스 출력 내용 삭제
- Filter : 필터링
- Highlight : 강조할 프로세스 표시
- Include Process From Window : 모니터링할 프로그램 선택
- Find : 텍스트 검색
- Jump to Object : 레지스트리 이동

- 마지막 옵션정보 5개를 가장 많이 이용 
- 기본적으로 모두 활성화되어있고 다시 클릭하면 비활성화

<hr>

- Tools > Process Tree
    - 종료되거나 은닉된 프로세스 정보까지 확인 가능

- Options > Enable Boot Logging 
    - 윈도우 부팅 로그 작성
    - 시스템 재부팅 -> Process Moniter 실행 전까지 로그를 생성하여 분석 가능

### 2.2.5 API 실행 변화 관찰
- 관제에서는 다루지 않지만 분석가가 수행
- 악성코드가 실행될 때 사용되는 API 함수 확인 가능
- MSDN에서 API 함수 조회 가능

## 역공학 분석, Reverse Engineering
- (보안관제 분야는 아닙니다)
    - 악성코드 분석, CERT 영역

- 정적분석과 동적분석으로도 명확한 행위를 특정하기 어려울 때 수행
- 악성코드 기능을 상세하게 분석하여 확인 가능
- 리버싱 방지를 위해 프로텍트, 패킹, 로더 등 다양한 방법으로 분석가 방해
- 저급(어셈블리) 언어 영역에서 악성코드를 역으로 분석하는 기법





## 2.3 고급 동적 분석


## 2.4 고급 정적 분석

<hr>

# 3. 분석 환경 구성 및 도구 실습
- 가상머신과 host간의 공유폴더 절대 금지
    - 측면 공격을 통해 침투 가능
- 악성코드 중 실행환경을 식별(가상환경)하는 (vmware process) 경우가 많습니다.
    - 이를 우회하기 위한 여러 방법 중 하나로
    - code reversing에서 분기문을 조작하여 우회
    - 또는 processs명 변경(vmware process)
    - registry를 통한 식별도 가능


    
## 3.1 가상환경(Hypervisor) 이해

## 3.2 가상환경 구성
- 요약 : 스냅샷 습관화
- 여건이 된다면 최대한 다양한 환경 구축 권장
    - 고객이 요구하는 파일을 분석할 수 있는 환경
    - 악성코드 구동이 가능한(취약한) 환경 구성
        - 스냅샷을 통해 취약한 버전 사용
        - OS 패치 미적용
        - 안티바이러스 미설치, 윈도우 디팬더 기능 해제
        - 모든 과정을 마치면 기본 스냅샷 저장 필수
        - 악성코드 분석 과정에서 실행전, 실행중, 실행후 모든 과정에서 스냅샷 필수
    - 최대한 시간을 절약하기 위한 방법
    - 필드에 가면 시간이 여유롭지 않음 

## 3.3 분석 도구 실습

<hr>

## 4 악성코드 전파 과정
### 4.1 전자메일 통한 공격 과정
- 악성파일 첨부 : 매크로(워드), OLE 기능(HWP), 실행파일 등을 첨부하여 악성코드 설치 유도

- 압출파일도 암호만 없다면 sandbox에서 분석 가능
- 악성파일의 암호
    - 보안 솔루션 우회
    - 사용자의 경계심을 낮추기 위해

### 4.2 홈페이지 통한 공격 과정
- 워터링홀 공격, p58
    - 홈페이지가 물웅덩이가 되어 찾아오는 모든 사람을 감염
- 사용자들이 자주 접속하는 웹페이지 내 악성코드를 삽입하여 공격



### 4.3 공급망 통한 공격 과정



# 사담
- 보안관제 직원이 차단 ip주소를 실수로 0.0.0.0으로 설정하여 PM, 사수 중징계, 해당 직원 경징계
- 1인관제는 없다시피 하고, 보통 사수 부사수 2인 1조
    - 호흡이 중요함
- 최근은 자동화된 보안관제 시스템이 도입을 시작하는 단계
- 쏘아
    - playbook 
        - scanning성 공격(sql 인젝션) 인지해서 방화벽까지 자동 차단하는 솔루션

## 분석 순서
- 분석 환경, 인프라는 팀, 프로젝트마다 제각각
- 반드시 정적분석 - 동적분석 순서를 지키지 않는 경우도 많습니다.
- 융통성 있게 분석

## 관제
- 관제를 하지 네트워크 트래픽 안에 유입된 악성코드를 분석까지 하는 사람은 거의 없음
- 각 사이트마다 특징이 있기에 트래픽, apt, 어떤 파일이 유입되었는지 등 솔루션이 다양합니다
    - 악성코드 분석은 apt장비와 관련이 깊습니다
    - apt 장비에서 alert 발생하면
        - 가상환경에서 정적, 동적분석
        - apt 장비에서도 어느정도의 분석이 수행

300x250
320x100


@@시험문제@@
world writable
타 사용자에게 쓰기권한이 부여된 파일을 의미 
@@@@@@@@


U-04
bash를 입력하는 이유는 최초 로그인을 시도했다는 증거 - 실제 로그인이 가능한 계정에 대해 암호화 처리가 되어있는지 확인한다.
cat /etc/passwd | grep bash


U-44
UID 가 0 이면 슈퍼유저를 의미한다.


U-45
UNIX 계열에서 안전하게 root 권한을 획득하는 방법
1. 일반 사용자 계정으로 로그인
2. "wheel" root 권한이 필요한 사용자만 추가가 되어있어야함
3. /bin/su 파일 내 "su" 관련 설정의 주석이 제거되어있어야 함
4. /bin/su 파일 그룹에 "wheel" 이 설정되어 있어야 함


-rwsw-xr-x SUID
4755
소유자에게 s 들어가면 타사용자가 소유자가 가지고있는 최고권한을 이항받아 사용가능

-rwxr-sr-x SGUD
2755
그룹의 모든 권한을 타사용자가 이향받아 사용가능

s는 특수권한이 들어가있다


wheel 그룹 타사용자 들어가있어야함
수 파일 권한이 4755 에서 타사용자 권한이 제거되어있어야한다.
그룹에 루트가 아니라 휠이 되있어야한다. 


U-51 

계정은 없고 그룹만 존재하는 상태를 확인해야함


U-53
sync / shutdown / halt 는 계정이 자기 자신으로 되어 있어야 제 기능을 할 수 있기 떄문에 예외로 본다.


U-54
cat /etc/profile 
profile 안에 뉴마스크, 시스템환경변수, 사용자환경변수, 세션타임아웃 값을 설정할 수 있다.


U-05
CATALINA_HOME -> tomcat에 대한 환경변수
CATALINA_HOME는 사용자가 직접 설정

tomcat, whats (java 기반)는 라이브러리가 있어야한다. -> 라이브러리가 없으면 특정코드를 실행했을떄 실행, 구현, 발현이 안된다.


find 명령어를 입력할때 
find / -name tomcat        -- 다수의 파일을 검색할때 엄청난 파일이 쏟아져 나와서 이렇게 하면 안된다.
find /root/apache-tomcat-9.0.0.M19

데몬이 중지가 될 수 있는 이유 2가지
1. 서비스를 더이상 제공하지 않음
2. 이중화 - Active / standby   = 로드밸런싱

test-tomcat-01 - Active
test-tomcat-02 - Active
test-tomcat-03 - Standby ( 1,2번 하나가 죽으면 Standy가 active로 돌아가서 서비스의 영향이 없음)

오토스케일링 - 오토스케일링(Autoscaling)은 클라우드 환경에서 애플리케이션의 수요에 따라 자동으로 서버 인스턴스를 추가하거나 제거하는 기능입니다

이중화로 걸려있는 대상 서버도 있기 떄문에 실제로 내용을 확인해야한다.

shadow 
패스워드를 암호화하기 위해 필수로 설정되어야하는 파일

hosts 

U-10
RPC서비스(remote procedure call) : 서버 내 rpc 서비스가 존재 할 경우 내부 네트워크를 통해 Client 가 요청해서 서비스를 구동할 수 있음
XINETD / INETD (인터넷 슈퍼 데몬) : 서버 내부 XINETD / INETD 데몬이 구동중이고 디렉터리내 "r"(remote) Command 서비스가 등록되어 있을 경우 
  외부네트워크를 통해 Client가 요청해서 서비스를 구동할 수 있음
  
  
rsyslog.conf   
시스템 로그와 수 로그를 어디에 저장할지 기록

SUID , SGID



커멘드를 실행하고 로그인을 하거나 강제적으로 활용될때 대표적으로 사용하는 3가지
exec (강제실행)
login 
sh, bash

이들 앞에 r 이 붙으면 원격지에서 실행이 가능하다는 것 
인터넷 슈퍼데몬이 구동중이고 rexec , rlogin, rshell 등이 된다면 외부에서 실행이 가능하다는 취약점이 생긴다.

xinetd : xinetd는 Unix 및 Linux 시스템에서 사용되는 확장된 인터넷 서비스 데몬입니다.


U-56

신규로 생성되는 파일들은 umask 설정값에 대해 기본적으로 권한이 설정된다.
umask는 파일이나 디렉토리가 생성될 때 기본 권한을 설정하는 값입니다. 이 값은 파일의 기본 권한에서 특정 권한을 제거하여 최종 권한을 결정합니다.
UMASK 002
디렉터리 
파일

-gt 199

199 초과하면 umask 022 이하면 umask 022 를 가져간다.


Finger
시스템에 등록된 사용자, 네트워크에 대한 다른시스템에 연결되어잇는 것까지 다 리스트 하는 서비스 (사용자체가 불필요한 서비스)



FTP (port 21)
SFTP (22)
TFTP(계정자체를 텍스트 플레인으로 사용해서 이제 사용안함), VSFTP, PROFTP, WUFTP (port 21) 

VSFTP 포트 오픈과 데몬을 설치해줘야한다.
VSFTP 설치시 default 값
anonymous=yes 
user=ftpadminuser
umask=022 (권한에 맞는 umask 를 설정해줘야함)


crontab : crontab은 리눅스 및 UNIX 계열 시스템에서 주기적으로 작업을 자동으로 실행하기 위해 사용되는 도구



U-30

SMTP 25번 포트 오픈되어 있음 
Sendmail

레파지토리에서 가져온 것들은 rpm 때리면 다 나오게 되어있다. - 안나오는데 설치되어있으면 실제 source 로 다운받아서 설치한 것 (git)같은거 사용
rpm -qa | grep sendmail



sendmail 메일로 보냄으로 있어서 가장 중요한 것은 사서함( q ) q가 계속쌓이면 메일 전송이 느려진다.
너무 많은 데이터가 모이면 메일발송, 수신이 늦어진다. -> 악성메일 훈련 


DNS server 
1. 정방향 조회 영역
- cname(하나의 도메인 이름) 주 데이터 XXX.XXX.XXX.XXX(아이피주소) | Description XXXXX.com (도메인주소)


2. 역방향 조회 영역
- cname(하나의 도메인 이름) 주 데이터 XXXXX.com (도메인주소) | Description XXX.XXX.XXX.XXX(아이피주소)



DNS 1, 2, 3, 4  active 
DNS 5, 6, 7 standby

standby 가 활성화 되려면 1234567이 모두 같은 내용을 가지고 있어야 한다. ( 영역전송허용 )



- 에러 코드의 취약점이 뭐야
서비스 거부 공격(DoS)
에러 코드가 발생하는 특정 조건을 악용하여 시스템의 자원을 고갈시켜 서비스가 중단되도록 할 수 있습니다.


디렉터리 리스팅 취약점 
디렉터리 리스팅 취약점(Directory Listing Vulnerability)은 웹 서버가 특정 디렉터리의 파일 목록을 사용자에게 노출하는 보안 취약점입니다.


300x250
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
320x100

침해사고 대응

 

SFTP (SSH File Transfer Protocol)

  • 파일을 전송하기위한 보안 채널을 제공하는 보안 파일 전송 프로토콜
  • Secure Shell 프로토콜의 일부
  • 클라이언트와 서버간에 SSH 프로토콜에 의해 설정된 연결로 파일을 전송
  • 데이터를 암호화해서 파일을 전송

Layer 2 :  MAC 주소 통신

  • MAC 주소는 모두 다르기 때문에 서로 간의 신뢰관계가 형성됩니다.

 

ARP : 네트워크에서 IP 주소를 MAC 주소로 변환하는 프로토콜

주로 IPv4 네트워크에서 사용되며, 데이터 링크 계층에서 호스트 간의 통신을 가능하게 합니다.


ARP Spoofing: MAC 주소를 기반 공격, 네트워크에서 ARP를 조작하여 데이터 전송을 가로채는 방식입니다.
Man-in-the-Middle Attack공격자가 게이트웨이 주소를 변경하여 패킷에 URL을 삽입하고, 이를 통해 데이터를 가로채거나 변조합니다. /  공격자가 두 당사자 간의 통신을 가로채고, 조작하거나 도청하는 공격 방식

 

Layer 3
BGP (Border Gateway Protocol) Hijacking:
네트워크 경로를 악의적으로 변경하여 트래픽을 가로채는 공격입니다.

 

 

응용 계층

 

DNS (Domain Name System):
TTL (Time to Live):
TTL이 짧으면 DNS 질의에 부하가 걸립니다.
TTL이 길면 DNS 질의가 줄어들어 서버에 가는 부하가 적습니다.
DNS Sinkhole: 악성 트래픽을 차단하기 위해 DNS 요청을 조작하여 가짜 IP 주소로 유도하는 기술입니다.
BGP 하이재킹 탐지
BGP 하이재킹을 탐지하기 위해서는 자신이 소유한 prefix보다 하나 작은 prefix를 모니터링해야 합니다.

 

BGP Hijacking

BGP(경계 게이트웨이 프로토콜)는 인터넷에서 서로 다른 네트워크, 즉 AS(자율 시스템) 간에 라우팅 정보를 교환하는 프로토콜입니다. 여기서 AS는 특정 조직이나 기업이 관리하는 IP 주소 대역을 의미합니다.

 

 

예상문제 BGP Hijacking 공격 대응 방안

  • IP 대역에 맞지 않는 트래픽이 발생하는지 확인
  • 갑자기 응답 패킷의 양이 변하는지 확인
  • 잘못 연결되어 리다이렉트되는 트래픽이 있는지 등을 체크하면서 꾸준히 모니터링
  • 또한, 특정한 대역만 허용하도록 하는 화이트리스트 사용

(화이트리스트: 특정한 IP 주소, 도메인, 또는 네트워크 대역만을 허용하여 접근을 제어하는 보안 메커니즘)

  • 라우팅 정보의 무결성을 보장하는 인증서를 발행하여 통신의 신뢰성을 올리는 방법

 

복원력 resilience

  • 복원성 있는 네트워크는 주어진 권한을 벗어나는 행위를 빠르게 식별하고 이러한 행위를 격리할 수 있어야 한다.
  • 복원성 있는 네트워크는 통제 가능하도록 구성되어야 하며 이를 통해 잠재적 피해를 최소화할 수 있어야 한다.

Ex) 7.7 DDos 공격은 대응할 수 있는 장치가 구성되어 있지 않았다.

  • 이때 가장 중요한 것은 탐지된 비정상 행위를 격리하되 비즈니스 연속성 보장을 위한 작업의 생존성을 보장하여야 한다.

 

제로트러스트

제로트러스트는 경계선 기반 방어체계의 한계를 극복하기 위해 구성

제로트러스트는 자산의 중요도를 따진다. 자산을 식별하고 가치를 매기는 것이 어렵다.

경계선 기반 방어쳬계의 완벽한 항복 선언 ( 경계선 기반 방어는 증가된 공격표면을 감당하지 못함)

why ? 경계선을 만들 수 없다, 다른회사들 소프트웨어 쓰는거, 클라우드 기반 등을 지켜야 하는데 경계선이 무한히 확장되었기 때문에 지킬 수가 없다. 그래서 좀 더 자른 경계를 만들어야 한다 그게 제로트러스트이다.

네트워크의 구조변화를 통한 네트워크 가시성 확보에서 시작 ( 방어 가능한 네트워크 )

 

2021년 제로트러스트 선언

누구도 믿지 않겠다는 것이다. 제로 트러스트 전략에 따르면 안전한 영역도 없고, 안전한 사용자도 없다. 내부인이라도 철저한 인증과 신원 확인을 거쳐야 한다. 네트워크를 사용할 수 있는 시스템과 정보 접근 권한도 최소화할 필요가 있다. 

 

SDN (Software Defined Network), 오버랩 네트워크

SDN과 오버랩 네트워크는 현대의 IT 환경에서 중요한 역할을 하며, 네트워크 관리의 효율성을 높이고, 변화하는 비즈니스 요구에 신속하게 대응할 수 있게 해줍니다. 이러한 기술들은 특히 클라우드 컴퓨팅, 데이터 센터, 그리고 대규모 네트워크 환경에서 큰 주목을 받고 있습니다.

 

Root DNS

DNS의 역할: DNS(도메인 네임 시스템)는 도메인 이름을 IP 주소로 변환하여 인터넷에서의 통신을 가능하게 합니다.


DNS 서버의 종류: DNS 서버는 다양한 도메인 최상위 도메인(TLD)을 관리합니다. 예를 들어, .com, .net, .org 등의 도메인을 담당하는 DNS 서버가 있습니다.

 

13개의 DNS 서버
구성: 총 13개의 DNS 서버가 있으며, 이 서버들은 각각 특정 TLD를 관리합니다. 이들 서버는 고유한 IP 주소를 가지고 있으며, 도메인 네임에 대한 정보를 응답합니다.


책임 분담: 각 DNS 서버는 특정 도메인에 대한 요청을 처리합니다. 예를 들어:
.com TLD를 담당하는 DNS 서버
.net TLD를 담당하는 DNS 서버
.org TLD를 담당하는 DNS 서버

 

응답 주소: 각 DNS 서버는 해당 TLD에 대한 도메인 이름의 IP 주소를 응답할 수 있습니다이 주소는 로그에 기록된 IP 주소들로 나타납니다.


요약
DNS 서버: 총 13개, 각각 특정 TLD를 관리
TLD 종류: .com, .net, .org 등
기능: 도메인 이름을 IP 주소로 변환하여 응답
응답 주소: 각 DNS 서버는 고유한 IP 주소를 가지고 있으며, 해당 도메인에 대한 정보를 제공

 

** CCTLD는 "Country Code Top-Level Domain"의 약자로, 국가 또는 특정 지역에 대한 도메인 네임을 나타내는 최상위 도메인입니다.

 

 

DNS 프로세스 흐름


DNS 요청:

사용자가 PC에서 http://www.naver.com에 대한 DNS 요청을 합니다.
DNS 서버로 요청 전송:

PC는 설정된 DNS 서버(168.126.63.1)에 http://www.naver.com의 IP 주소를 요청합니다.
DNS 서버의 처리:

168.126.63.1 DNS 서버는 자신의 레코드에 해당 도메인 정보가 없으므로, 다른 DNS 서버(예: 루트 DNS 서버 또는 TLD DNS 서버)에 요청을 전달합니다.
응답 수신:

최종적으로, 해당 도메인에 대한 정보가 있는 DNS 서버에서 http://www.naver.com의 IP 주소를 찾아서 168.126.63.1 DNS 서버로 응답합니다.
PC로 응답 전달:

168.126.63.1 DNS 서버는 찾은 IP 주소를 PC로 다시 전달합니다. 이제 PC는 http://www.naver.com에 대한 IP 주소를 알고, 해당 웹사이트에 접근할 수 있습니다.

 

 

PC -> 설정된 DNS서버 -> Root DNS or TLD DNS server (IP GET) -> 설정된 DNS 서버 -> PC (사이트 접근)

 

 

 

Firewall(정책을 걸어서 끊는다) - > IDS (string기반 침입 탐지장치) - > IPS( IDS + active response ((TCP 통신을 reset 기반 통신차단 기법을 이용해 통신을 차단하는 장치)

 

 

패킷에는 타임스탬프가 없고 피캡에는 있다.

 

패킷:
일반적으로 패킷 자체에는 타임스탬프 정보가 포함되어 있지 않습니다. 패킷은 전송된 데이터의 기본 단위로, 수신 시각이나 생성 시각 같은 메타데이터를 포함하지 않습니다.
피캡 파일:

피캡 파일(.pcap 형식)은 네트워크 패킷을 캡처하여 저장하는 파일로, 각 패킷의 전송 시간 정보를 포함할 수 있습니다. 이 파일은 패킷 분석 도구(예: Wireshark)를 사용하여 열어볼 수 있습니다.

 

타임스탬프 옮기기
타임스탬프를 피캡 파일에 옮기는 작업은 다음과 같은 절차로 진행됩니다.

패킷 캡처:
네트워크 트래픽을 캡처하여 피캡 파일로 저장합니다. 이때 각 패킷의 수신 시각이 타임스탬프로 기록됩니다.

 

타임스탬프 추출:
피캡 파일에서 각 패킷의 타임스탬프를 추출합니다. 이를 위해 Wireshark와 같은 패킷 분석 도구를 사용할 수 있습니다.

 

타임스탬프 저장:
추출한 타임스탬프를 각 패킷에 대응하여 별도의 파일이나 데이터베이스에 저장할 수 있습니다. 이 데이터는 나중에 패킷 분석 시 유용하게 활용될 수 있습니다.

 

분석:
타임스탬프 정보를 활용하여 패킷의 전송 시간, 지연 시간, 패킷 손실 등을 분석할 수 있습니다.

 

 

1. 싱크홀(Sinkhole)
네트워크 보안에서 싱크홀은 악성 트래픽을 특정 서버로 유도하여 분석하거나 차단하는 기술입니다. 이를 통해 공격을 감지하고 방어할 수 있습니다.

 

2. 패킷에서 존을 바라보는 이유
존(Zone): 패킷의 특정 필드에서 "존" 정보를 확인하여 해당 패킷이 싱크홀과 관련이 있는지 판단할 수 있습니다. 이 정보는 패킷의 출처나 목적지를 분석하는 데 유용합니다.

 

3. IP TTL (Time to Live)
TTL 개념: TTL 값은 패킷이 네트워크에서 얼마나 오래 살아남을 수 있는지를 나타냅니다각 라우터를 통과할 때마다 TTL 값이 감소합니다.
윈도우 vs 리눅스:
윈도우: 기본 TTL 값은 64입니다.
리눅스: 기본 TTL 값은 127입니다.
마지막 0이 될 때: TTL 값이 0이 되면 패킷은 폐기됩니다. 따라서 TTL 값을 통해 패킷의 경로를 추적할 수 있습니다.

 

4. 3-Way Handshake
정의: TCP 연결을 설정하기 위한 과정으로, 다음과 같은 단계로 이루어집니다:
SYN: 클라이언트가 서버에 연결 요청을 보냅니다.
SYN-ACK: 서버가 클라이언트의 요청을 수락하고 응답합니다.
ACK: 클라이언트가 서버의 응답을 확인합니다.
에크(ACK): 이 단계에서 클라이언트와 서버 간의 연결이 완전히 설정됩니다.

 

5. HTTP Request
푸쉬(PUSH): 클라이언트가 서버에 데이터를 전송할 때 사용됩니다. 이때 HTTP 요청이 발생합니다.

 

6. DNS TTL
정의: DNS TTL은 캐시된 DNS 레코드가 얼마나 오랫동안 유지될지를 결정합니다. 이 값이 만료되면 DNS 서버는 해당 정보를 새로 요청해야 합니다.

 

7. 기타 용어
핑(PING): 네트워크 연결을 테스트하기 위해 ICMP 프로토콜을 사용하는 명령어입니다. 네트워크의 응답 시간을 측정하는 데 사용됩니다.
신(SYN): TCP 연결 요청을 나타내는 플래그입니다.
리셋(RST): TCP 연결을 강제로 종료할 때 사용되는 플래그입니다.
에크(ACK): 데이터가 성공적으로 수신되었음을 확인하는 플래그입니다.

 

 

2예상문제 DDOS

방어자 입장에서 당할 수 잇는 공격 3가지

  • 대역폭 소진 공격 (100g 라우터에 200g들어오면 null routing 이라고 버림 --> 이는 서비스의 가용성을 저하시킵니다.)

부분차단

70G공격이 100g router에 들어오면 라우터에서 차단을 하고 쓰레기통으로 버리고 남은 통신은 정상적으로 전달이 된다.

 

대역폭소진공격에서 가용대역폭을 초과하는 공격이 들어오게 될 경우, 예를들어 20g공간에 30g가 들어오게 되면 라우터는 이 과부하를 처리할 수 없어 일부 트래픽을 차단하게 됩니다.

 

방어방법

대역폭소진공격은 가용성을 가지고 있는 상단에서만 막을 수 있다.  // 우리나라 관문체계에서는 대역폭 소지기반 대응이 다 들어가있다.

 

  • HTTP기반 공격 ( 클라이언트 ↔ 서버 관계에서)

HTTP 기반 공격은 클라이언트와 서버 간의 연결을 악용하여 서버의 자원을 소진시키거나 서비스 중단을 유발하는 공격

 

서버는 한 번에 처리할 수 있는 연결 수에 한계가 있습니다. 예를 들어초당 1,000번의 연결을 처리할 수 있는 서버가 있다고 가정할 때, 클라이언트가 초당 1,000번의 요청을 보내면 서버의 연결이 소진됩니다.

 

SYN Flood 공격:

공격자가 지속적으로 SYN 패킷을 전송하면 서버는 각 연결 요청에 대해 "SYN-ACK" 응답을 보냅니다. 이 과정에서 서버는 연결을 위한 리소스를 할당하게 되며, 이로 인해 서버의 자원이 고갈됩니다. 결국, 정상적인 클라이언트의 연결 요청을 처리할 수 없게 됩니다.

 

DDoS 공격:

공격자가 여러 클라이언트를 이용해 초당 하나씩 요청을 보내면, 서버의 연결 수를 소진시키는 DDoS(분산 서비스 거부) 공격이 발생할 수 있습니다. 이 경우, 공격자는 여러 IP 주소를 사용하여 서버의 자원을 고갈시키므로 방어가 더욱 어려워집니다.

 

3예상문제 방어방법

시그니처 기반 방어:

공격 패턴에 대한 시그니처를 설정하고, 이를 기반으로 비정상적인 트래픽을 필터링합니다. 이러한 방법은 자동으로 공격을 탐지하고 차단할 수 있는 효과적인 방법입니다.

 

대피소 동작:

대피소와 같은 시스템을 구축하여 공격이 발생했을 때 자동으로 대처할 수 있는 체계를 마련합니다. 이 체계는 공격을 감지하고, 필요한 경우 트래픽을 차단하거나 우회시킵니다.

 

프록시 및 DNS 변경:

방어를 위해 프록시 서버를 사용하고 DNS를 변경하는 방법이 있습니다. 이를 통해 공격 트래픽을 다른 서버로 우회시키고, 공격자의 IP 주소가 직접 서버에 도달하지 않도록 할 수 있습니다.

 

재방문 횟수 카운트

공격자의 재방문 횟수를 카운트하여, 일정 횟수 이상 접속하는 IP 주소를 차단합니다. 이를 통해 공격자를 식별하고 차단할 수 있습니다.

 

 

  • 국지적 DDoS 대역폭 소진 공격

 

DDoS 공격은 여러 대의 컴퓨터(봇넷)를 이용하여 특정 서버나 네트워크를 대상으로 대량의 트래픽을 발생시켜 서비스의 정상적인 운영을 방해하는 공격입니다. 국지적 DDoS 공격은 특정 지역이나 특정 네트워크에 집중된 공격을 의미합니다.
대역폭 소진:

100메가의 대역폭을 가진 네트워크에서는 공격이 명확하게 보이지만, 백지망(예: 서버의 대역폭이 매우 높은 경우)에서는 상대적으로 덜 보일 수 있습니다.


패킷 흐름:
공격자가 자신의 IP 주소(a.b.c.d)를 소스 IP로 설정하고, 피해자의 IP 주소(5.4.3.2)를 목표로 하여 DNS 쿼리를 보냅니다. 이때 패킷의 소스 포트와 목적지 포트가 53번(DNS 포트)인 경우, 해당 트래픽이 의심스러운 것으로 간주되어야 합니다.

 

*소스 포트가 53번인 경우, 이는 DNS 서버가 클라이언트로부터의 쿼리에 대한 응답을 보내고 있다는 것을 의미합니다. 그러나 공격자가 자신의 IP 주소를 위조하여 이러한 패킷을 전송하는 경우, 정상적인 DNS 쿼리와는 다른 비정상적인 트래픽 패턴이 발생할 수 있습니다.

 

방어 방법

트래픽 모니터링:
비정상적인 트래픽 패턴을 모니터링하고, 특히 DNS 쿼리에 대한 비정상적인 요청을 감지합니다. 소스 포트와 목적지 포트가 53번인 경우, 이를 즉시 차단하거나 추가 검토를 요청할 수 있습니다.

 

오픈 DNS 서버 제한:
공개 DNS 서버가 악용되지 않도록 설정을 강화합니다. 오픈 리커시브 DNS 서버의 사용을 최소화하고, 필요한 경우 IP 주소 필터링을 적용하여 접근을 제한합니다.

 

대역폭 관리:
네트워크의 대역폭을 관리하고, DDoS 공격 발생 시 자동으로 트래픽을 차단하거나 우회시키는 시스템을 구축합니다.

 

신속한 대응 체계 구축:
공격 발생 시 신속하게 대응할 수 있는 체계를 마련합니다. 예를 들어, 특정 패턴의 트래픽을 감지했을 때 자동으로 차단하거나 경고를 발생시키는 시스템이 필요합니다.

 

 

tshark: Wireshark의 명령줄 기반 패킷 분석 도구입니다.

ngrep: ngrep는 네트워크 패킷을 필터링하고 분석하는 데 사용하는 도구입니다. 일반적으로 패킷을 실시간으로 캡처하고 특정 패턴을 찾아 출력합니다.

 

 

 

*TLS(Transport Layer Security)는 인터넷 상에서 데이터를 안전하게 전송하기 위한 암호화 프로토콜


 

(2) 주요통신기반시설 점검(기술)

 

1번문제 주요정보통신 기반시설을 점검할 수 있는 자 (아닌것은?)

한국인터넷진흥원 KISA

정보공유 분석센터,

정보보호 전문 서비스 기업 (정보보호 전문 서비스 기업은 SK쉴더스를 포함 총 28기업이 있다.)

한국전자통신연구원 

 

 

주요정보통신 기반시설로 지정이 되어 있는 장소는 1년에 한번 취약점 진단을 꼭 받아야한다 

제17조(취약점 분석 및 평가 시기) → 지정 후 6개월 이내에 분석을 해야함, 매년 취약점 분석 평가를 실시해야한다.

과학기술정보통신부고시 제2021-103호:

** 법률은 선택사항이 아닌 의무사항이다.

 

 

---

2번문제 보안위협에 대해 설명하고 이것을 제거하기 위해서 설정해야할 것은?

 

Session Timeout 설정 - 383

주기적으로 세션 체크를 해서 연결이 정상적인지 확인한다 .

Session Timeout 설정 (5 이하 권고)

Session Timeout 설정 유무를 점검하여 터미널 접속 후 일정 시간(Session Timeout 지정 시간)이 지난 뒤 터미널 세션이 자동으로 종료되어 관리자의 부재(터미널 작 중 자리 비, 작업 완료 후 터미널 접속을 종료하지 않 음) 시 발생 가능한 비인가자의 터미널 접근 통제가 되는지 확인하기 위함

 

Session Timeout 정책이 적용되지 않을 경우, 관리자 부재 시 비인가자가 네트워크 장비 터미널에 접속된 컴퓨터를 통해 네트워크 장비의 정책 변경 및 제 등의 행위를 할 수 있는 위험이 존재함

 Session Timeout: 터미널 접속 후 유휴 상태 일 때 자동으로 터미널 접속을 종료하는 시간 설정

---

3번문제 SNMP(Simple Network Management Protocol) 서비스와 관련해서 라우터에 config 해야할 사항은?? - 387p

가장 좋은 방법은 사용을 안하는것

하지만 사용을 해야한다면, 보안을 해야 할 사항들 중 틀린것은?

  •  
  • Community String이 디폴트로 되어있는 것은 사용하면 안된다 ( 삭제해야함)

  • 새롭게 Community String 을 생성해야하는데 복잡하게 생성을 해야함
  • Community String의 권한은 라이트 권한을 주어서는 안된다. (필요에 의해 사용을 할 수 있어도 기본적으로 라이트 권한은 안됌)

  • SNMP를 통해서 장비에 접근할 수있는 아이피를 제한한다. access list를 통해 제한한다.

 Community String: SNMP는 MIB라는 정보를 주고받기 위해 인증 과정에서 일종의 비밀번호인 'Community String'을 사용함

---

 

4번문제 스푸핑 방지를 위해 설정해야할 아이피 주소가 아닌것은? (객관식) - 397

 

■ 장비별 조치방법 예시 공통 특수 용도 주소 차단(RFC 6890 참조)

 

0.0.0.0/8 자체 네트워크(This host on this network, RFC1122)

10.0.0.0/8 사설 네트워크(Private-Use, RFC1918)

127.0.0.0/8 루프백(Loopback, RFC1122)

169.254.0.0/16 링크 로컬(Link Local, RFC3927)

172.16.0.0/12 사설 네트워크(Private-Use, RFC1918)

192.0.2.0/24 예제 등 문서에서 사용(TEST-NET-1, RFC5737)

192.168.0.0/16 사설 네트워크(Private-Use, RFC1918)

 

---

5번문제  Directed-broadcast 차단 - 434 (단답형 주관식)

 

 Directed-broadcast 서비스 차단을 통해 DoS 공격을 방지하기 위함

Directed broadcast는 특정 서브넷에 있는 모든 호스트에게 데이터를 전송하는 방식입니다

예를 들어, 서브넷 마스크가 255.255.255.0인 경우, 192.168.1.0/24 서브넷의 브로드캐스트 주소는 192.168.1.255입니다. 이 주소로 전송하면 서브넷 내의 모든 호스트가 메시지를 수신합니다.

Directed broadcast는 네트워크 공격에 악용될 수 있으므로, 많은 네트워크에서 기본적으로 비활성화되어 있습니다.

 

스머프 공격 은 브로드캐스트

 

 Smurf 공격: 인터넷 프로토콜(IP) 브로드캐스트나 기타 인터넷 운용 측면을 이용하여 인터넷망을 공격하는 행위로 브로드캐스트에 대한 응답받을 IP 주소를 변조하여 해당 IP 주소 호스트에 DoS 공격을 감행하는 공격 기법

 

브로드캐스트 아이피 특징 :

그쪽으로 핑을 보내면 이 범위 안에 있는 호스트들에게 다 뿌린다.

그래서 스머프 공격이라는 것은 내가 공격 대상자 소스 IP를 변조해서 브로드 캐스트 아이피로 핑을 보냄,

브로드캐스트 아이피가 같은 범위 안ㅇ ㅔ있는 호스트에게 request 를 보냄

→ 이것을 받은 호스트들이 공격 reply 를 공격자가 변조를 시킨 공격 대상 IP로 공격을 보냄

 

이것을 차단하기 위해서 차단해야 하는 항목은 무엇인가?

 

 다이렉트 브로드캐스트 차단.

 


(3) 네트워크 구조 및 보안

1 bite = 2^8 = 0 ~ 255

 

7계층 : URL

4계층 : port 주소 (어느 프로그램에게 가야 하는지를 알려줌) (2 bite)

TCP/UDP : 전송 계층 프로토콜

TCP : 신뢰성 o - 말한대로 전달한다

UDP: 신뢰성 x - 말한대로 전달하지 않는다

3계층 : IP (4 bite)


URL을 입력하면, 먼저 DNS(Domain Name System)에 쿼리를 보내 해당 도메인의 IP 주소를 조회합니다.

DNS 서버는 해당 도메인에 대한 IP 주소를 반환합니다. 이 IP 주소가 목적지 IP가 됩니다.

 

 

 

1,2계층 : MAC (6bite)

 

게이트웨이(처음만나는 라우터)의 IP 주소는 알고 있고 있지만, 난 MAC 주소를 알고 싶기때문에

ARP를 사용해서 브로드캐스팅 -> 해당 IP 주소를 가진 장치가 자신의 MAC 주소를 포함한 ARP 응답을 송신 장치에게 전송합니다.

ARP (Address resolution protocol) - IP를 MAC주소으로 변환

RARP - MAC주소를 IP으로 변환

  • Gateway: 우리 PC가 인터넷 세상으로 나가기 위해서 처음 만나는 라우터(별명)
  • routing table : 라우터를 키면 BGP protocol 을 이용해 routing table에 가는 길들을 다운받는다. 라우터는 포트가 4개가 있다.
  • subnet mask: 네트워크에서 IP 주소를 서브넷으로 나누는 데 사용되는 값입니다 내 아이피 주소를 가지고 어디까지가 네트워크 주소인지를 판단할때 사용 ( 네트워크 주소와 호스트 주소 나눈 것을 판별하는 것)
  • broadcast : 네트워크에서 특정 정보를 모든 장치에 동시에 전송하는 방식입니다.
  • unicast :한 사람의 특정 수신자에게만 데이터 패킷을 전송하는 방식

인터네트워킹

라우터: 네트워크를 연결하는 장비이며, 일반적으로 3 네트워크 계층 기능을 수행

서브넷 마스크가 있기 떄문에 랜을 구별할 수 있다.

 

리피터 : 반복한다 / 랜이 너무 커서 10km가 되면 랜인 회선으로 연결되어있는데 전기신호가 10키로 동안 계속 가는건 저항이 생긴다 떄문에 중간 중간 리피터(증폭기)를 설치를 한다. - 요즘은 사용하지 않음

 

브릿지: 랜을 버츄얼하게 나누고 싶을때 사용 / 라우터의 랜을 가상으로 한 포트당 몇개씩 버츄얼 하게 하기 위해서 랜선 하나 따서 그 밑에 여러개를 묶는 것 - 요즘은 라우터 값이 싸져서 사용하지 않음

 

랜에서 시작하여 첫번째로 만나는 라우터를 게이트웨이라고함

 

라우터 설명할때는 3계층 밖에 없다 - 왜냐면, 인터넷 상에 있는 라우터들은 최종 목적지가 아니기 떄문에 네트워크 계층에서 반환되고 다시 물리적 계층으로 내려간다 (목적지 아이피 주소가 나인지 아닌지만 확인함)

 

전송 (4계층) - 신뢰성 또는 통신품질에 대해 배울 예정

오류 제어

  • 전송 오류의 유형

화자가 이야기 한 것에 대해 청자가 바르게 알아 들어야한다.

  • 수신(청자) 호스트의 응답 프레임

긍정응답프레임: 데이터가 정상적으로 도착했을때, 수신 호스트가 송신 호스트에게 회신

부정응답프레임: 데이터가 꺠져서 도착했을떄, 수신 호스트가 송신 호스트에게 회신

(부정 응답 프레임을 받은 송신 호스트는 재전송 기능으로 오류 복구 시도)

 

프레임 분실: 내가 말한 것이 통으로 없어진다. (저녁먹을래 → 저녁 … ? )

1) 송신호스트에서 프레임 분실

송신 호스트는 타임아웃 시간을 갖고 상대방의 응답을 기다리는 시간이 있음 / 타임아웃 시간이 지날때까지 응답이 없으면 데이터를 재전송한다.

송신 호스트는 내가 말한 것을 상대방이 알아들었는지 못알아들었는지 판단이 가능하다. )

2) 수신호스트에서 프레임 분실

송신 호스트에서 데이터를 전송하고 “수신 호스트”에서 긍정 응답을 주는 와중에도 데이터 손실이 발생할 수 있다. → 그럼 송신 호스트에서 데이터를 재전송한다.

 

순서 번호 (sequence number)

  • 대화의 순서번호를 저장을 해둬야한다.

송신호스트가 대화를 수신호스트에게 했는데, 수신호스트가 긍정응답을 하는 중 프레임분실이 일어난다면, 송신 호스트는 일정 시간 타임아웃을 주고 기다리다가 다시 재전송을 한다.

만약 순서번호가 없으면 데이터의 중복이 발생한다. (금전적으로 보면 돈을 두번 보내는 꼴)

전송 오류의 유형

  • 수신 호스트의 응답 프레임

부정 응답 프레임을 받은 송신 호스트는 재전송 기능으로 오류 복구 시도

송신 호스트의 타이머 기능

  • 데이터 분실시 수신호스트로부터 어떠한 응답프레임도 발생하지 않음 → 송신 호스트는 일정 시간동안 응답 프레임이 없으면 타임아웃 기능으로 재전송을 시도

순서번호의 기능

 

수신호스트가 중복 프레임을 구분 할 수 있도록 지원

 

흐름제어

  • 수신 호스트가 감당할 수 있는 속도로 송신 호스트가 데이터를 전송하도록 제어를 해야한다.
  • 너무 빨리 전송하는 경우

수신 호스트가 내부 버퍼에 보관하지 못할 수 있음 -> 이는 프레임 분실과 동일한 효과를 야기함

내가 상대방한테 데이터를 줄때 상대방이 받는 응답의 속도에 맞춰서 흐름 제어를 한다. (슬라이딩 윈도우 프로토콜)

 

1, 2 계층 프로토콜

CSMA/CD(Carrier Sense Multiple Access with Collision Detection)

이더넷 =( LAN = MAC = 1,2 계층 = 물리적) 모두 같은말이다. 

 

Dummy HUB : 인터넷을 공유한다 (BUS 구조로 되어있음)

스위칭 HUB : 나만 연결한다 - > 속도가 더미허브에 비해 빠름

 

MA(Multiple Access): 다수 호스트가 하나의 공유 매체에 연결됨

 

CS(Carrie Sense): 호스트는 공유 매체의 사용 가능 여부를 신호 감지로 확인

 

CD(Collision Detection): 공유 매체에서 데이터 충돌 여부 확인

 

공유매체(LAN)의 길이가 길면 길수록 전송 지연이 증가하여 충돌가능성이 높아진다.

 

--------

1,2 계층 = 프레임 (3 계층에서 내려온 데이터 + 헤더를 칭함)

3 계층 = 패킷 (4 계층에서 내려온 데이터 + 헤더를 칭함)

4 계층 = TCP 세그먼트 / UDP 데이터그램 (위에서 내려온 데이터 + 헤더를 칭함)

---------

1,2 계층 헤더 크기는 14byte

3계층 헤더 크기 20byte

4계층 헤드 크기 20byte

-------

0-1500바이트까지 데이터를 담을 수 있다

패킷의 최대사이즈 1500바이트 (그림에서 Data 부분)

패킷의 최대사이즈는 1500을 넘을 수 없다. 하지만 어느날 데이터가 1600이 되어 있으면 ‘비정상’적 이기 때문에 잡아내면 된다.

 

8비트 = 1바이트

 

헤더의 구성

목적지 맥주소 6byte + 소스 맥주소 6byte + type 2byte (length)

= 물리계층의 총 헤더의 길이는 14byte이다. 

헤더 뒤에는 패킷이 따라옴

 

type(Length) 이 0x0800 (숫자 하나 하나가 16진수)이면 IP에게데이터를 줘야한다.

16진수는 2^4이기때문에 = 4비트이다.

‘영’ 4비트 ‘팔’4비트 ‘영’4비트 ‘영’4비트

8비트+ 8비트 = 2바이트



 

Type(Length): 내께 맞으면 데이터를 위로 올려야하는데 OS단에는 stack, IP .. 여러개가 있는데 누구한테 줘야하는지 정해준다. (포트 역할)

 

preamble : 데이터가 가기 전에 미리 알려주는 것 = (수신 호스트가 송신 호스트의 블록 동기를 맞추는 용도)

start delimiter : 1바이트 쉬고 데이터를 보내준다 = 프레임의 시작

 

traller: LAN 카드는 OS에 영향을 받을 수 밖에 없는다 OS에는 64비트, 32비트 설정하는게 있다. 이런것은 bus의 단위를 말함. CPU하고 죽은 기기를 통신할때 1비트씩 보내는게 아닌 64비트는 64를 한번에 보낸다. 만약 버스가 있다고 하면 64의 배수가 되어야 한다. 그럼 데이터를 맞추기 위해 PAD 를 통해 0000000을 집어넣어 64틀에 딱 맞춰서 보낸다.

checksum : 무결성값을 보낸다 // 앞에서 계산한 checksum 과 뒤에서 계산한 checksum값을 비교한다. 값이 다르면 랜카드는 폐기를 한다.

 

3계층 네트워크 계층의 기능

 

서비스의 종류

  • 연결형: 종이컵 2개에 실을 연결해서 대화를 하듯 연결을 하는 것
  • 비연결형 서비스: 데이터나 경로가 미리 정해져있지않음 (데이터가 가는데 주소만 간다) - 주소만 가지고 가까운 길로 간다.

(비연결형 서비스)

  • 패킷(데이터와 헤더가 합쳐짐)이 IP주소(네트워크계층이니까) 를 가지고 서로 다른 경로로 전송되므로 도착 순서가 일정하지 않는다. -> 그래서 상위 계층(4 전송계층)에서 순서를 재조정해야한다.

IP계층의 핵심목적은 정보가 깨지는 걸 신경쓰는게 아니라 빨리 보내는 것.

  • 그렇기에, 패킷 분실 가능성이 있다
  • 패킷의 100% 도착을 보장하지 않는다.
  • 상위 계층에서 패킷 분실 오류를 복구해야한다.

IP 프로토콜

 

IP 프로토콜은 비연결형이다 = 품질을 보장하지않는다 (쿠팡맨은 보내면 끝이고 상위계층 쿠팡에서 물건을 보상해줌)

TCP 는 연결형 프로토콜(그래서 신뢰성 보장)

 

패킷을 분할/병합하는 기능을 수행한다.

IP 헤더는 32비트이다 = 32비트 = 4 바이트

0 ~ 31

 

5층으로 나누어져 있어서 4+4+4+4+4 = 총 20바이트임

맨 밑에 계층은 요즘엔 쓰지 않아 빼고 계산

 

반 바이트 = 버전 넘버

Ipv4 = 4byte

Ipv6 = 6byte

 

읽는방법 : 각 층이 끝나면 왼쪽 으로 돌아감

version number : 우리는 ipv4를 사용함 = 4byte

header length = 3계층의 해더크기는 20바이트 이다 //  1 = 4byte // 20 byte = 5

MAC source address | MAC destination address | type(length) | 패킷 (version number 4 + header length 5)

 

  • service type : 세팅값에 따라 어떤건 빠르고 어떤건 늦게 간다 (하지만 지금은 의미가 없어져서 사용하지 않는다) = 0 → 만약 숫자가 0이 아니고 1이라는 숫자가 하나라도 나오면 잡아내야함

Covert Channel Hacking 은밀한 채널 해킹: 모든 OS는 service type 이 안쓴다는 걸 알기 떄문에 해석을 하지 않음, 해석하면 속도가 느려지니까 → 해커들이 좀비pc 에 명령을 때려서 시그니처를 하는데, 데이터에 attack 명령어를 쓰는게 아니고 service type 에서 명령을 때린다. 왜냐? 아무도 사용하지 않기 때문에 걸리지 않는다.

 

  • packet length(fragment offset) : 패킷의 최대 사이즈 1500 // 8바이트 단위로 계산한다.
  • Time to live : 패킷이 살아남기 위한 시간 // 예를들어 100으로 설정되어 있으면 라우터를 지날떄마다 하나씩 깐다 0이되면 소멸한다. - 쓰레기 패킷을 없애기 위함 (전송은 안되고 라우터끼리 핑퐁을 하는 등 ..)
  • transport : TCP 를 보낼지 IP를 보낼지 적어놓고 받는쪽에 배려를 한다는 의미. 윗계층 누구한테 줘야하는지를 적어놓음
  • header checksum: hash값으로 혹시나 의심스러울때 비교를 했는데 같으면 무결성 o같지 않으면 무결성에서 어긋나서 잡아내야함 // UDP 17 TCP 6

*UDP 17과 TCP 6은 각각 UDP와 TCP 프로토콜을 식별하는 프로토콜 번호입니다. 이 번호들은 IP 헤더에서 해당 프로토콜을 구분하는 데 사용됩니다.

 

scanner : 내가 상대방을 공격하기 전에 상대방의 정보를 꺼내 오는 것 ( Nmap )

 

 

 

  • 1기가를 전송하기 위한 패킷이 몇개가 팔요한가 ?

1기가 / 1500byte (패킷의 최대 사이즈)

하지만 헤더 20을 빼면 1480 만 한번에 전송될 수 있다 =

한번에 1기가를 받지 않고 1500byte씩 나눠서 받는 이유는 중간에 전송중 에러가 나면 1500만 다시 보내면 되지만 1기가로 보낼경우 1기가를 처음부터 다시 보내야한다. 

 

  • identification: 어디 데이터에서 왔는지 식별을 한다. A B C를 한번에 다운받는다고 가정을하면. A에서 쪼개고 B에서 쪼개서 전송되고하면 섞인다. 이것을 식별하고 모으기 위한 장치
  • DF (Dont Fragment): 분할하지 마라 / 있는 그대로 전송하면되고 분할하지 마라 (쪼개서오면 잡아내면된다)

 

fragmentation attack : 분할하지않아야 하는 것을 분할해서 하는 공격.

(패턴 = rule = signiture = 침해사고 = 악성코드// 모두 같은 말)

정보보호 기술은 패턴매칭 밖에 없다

V3 백신이 하는게 헤더와 데이터에 어택이 있으면, 어택 공격을 잡아내는 것 안잡히게 하려면 fragmentation을 해서 쪼개지 않아야 할 것을 강제로 쪼갬 → 보안장비를 속여 식별이 안됌 → 끝에 가면 헤더를 때고 합치기 떄문에 공격이 된다.

 

  • MF (More Fragment?) : 전송된 데이터가 완전히 다 들어왔는지 확인하는 장치 (내 뒤에 조각이 더 있나요? 하고 물어봄- 조각이 더 있으면 1 이라고 답함 그리고 마지막에 more fragment의 응답은 0으로 끝난다. - 반드시 마지막은 0으로 끝나야한다.)

—---------------------- 문제 -----------------------

IP 프롤토콜

**분할의 예

  • IP 헤더를 제외한 전송 데이터의 크기가 380 바이트
  • 패킷의 최대 크기가 128 바이트 일경우**
  1. Identification : 우리가 설정하는 값
  2. Packet length: 패킷의 최대크기 128바이트 에서 헤더 20을 떼고 봤을때 108바이트. Fragement Offset을 구하기 위해서는 8바이트로 나눠서 정수로 떨어져야 한다. 그래서 104 로 데이터 크기를 임의로 줄여 8바이트로 나눴을때 정수로 결과가 나오게 한다. (기존 108→104로 줄이면서 남은 값들은 모아서 맨뒤에서 처리할 예정)

104 + 헤더20 = 124 가 하나의 packet legnth(패킷 길이는 헤더값을 포함함) 값이 되는 것

최종적으로 124 / 124 / 124 / 88 이 나오는데 헤더크기 20을 각각 떼고 총 합을 더하면 데이터의 크기 380바이트로 데이터 전부 정상 전송하게 된다.

 

MF (more fragment) : 너 뒤에 더 있니? 있으면 1 마지막은 무조건 0 이되어야 한다.

Fragment Offset: 8바이트로 나눠져야함/ 패킷의 최대 크기 128바이트에서 헤더 20 떼고 108바이트에서 8로 나눴을때 정수로 떨어지게 하기 위해 104바이트로 줄임 → 이값을 8바이트 단위로 나누면 104/8 = 13

오프셋은 중첩이 되어 표에 작성된다. 13 / 26 / 39 … 데이터의 크기 380바이트가 모두 전송될때까지 늘어남

결과표

transport layer (전송 계층) (4계층)

데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송이라면, 전송계층은 논리적으로 1:1 연결된 호스트 사이의 전송

 

  • 흐름 제어

물리적 계층과 비교하여 상대적으로 복잡

수신자가 슬라이딩 윈도우 프로토콜의 윈도우 하단 값을 조정

슬라이딩 윈도우 프로토콜 데이터 전송의 흐름을 제어하는 방법입니다. 이 프로토콜은 주로 TCP(전송 제어 프로토콜)에서 사용되며, 송신자와 수신자 간의 데이터 전송을 효율적으로 관리하기 위해 사용됩니다.

슬라이딩 윈도우 프로토콜의 기본 개념:

 

윈도우 크기:
슬라이딩 윈도우 프로토콜에서는 송신자가 한 번에 전송할 수 있는 데이터의 양을 "윈도우 크기"로 정의합니다. 이 윈도우 크기는 수신자가 처리할 수 있는 데이터의 양을 나타냅니다.

윈도우 하단 값:
윈도우 하단 값은 현재 수신자가 수신할 수 있는 데이터의 시작 지점을 나타냅니다. 데이터가 수신되면 이 하단 값이 이동하여 새로운 데이터가 수신될 준비가 됩니다.

 

수신자가 윈도우 하단 값을 조정하는 이유:
수신자는 자신의 버퍼 크기 및 처리 능력에 따라 윈도우 하단 값을 조정합니다. 만약 수신자의 버퍼가 가득 차면, 수신자는 송신자에게 더 이상 데이터를 보내지 못하도록 하여 데이터 손실을 방지합니다.

 

  • 오류 제어

데이터 변형, 데이터 분실 오류

재전송 기능으로 복구

빨리말하면 이해 못한다.

 

TCP 헤더 크기는 20 이다.

1480 - 20 = 1460

 

TCP

연결형 서비스를 지원

전이증(쌍방향) 방식의 가상 회선을 제공

신뢰성 있는 데이터 전송을 보장

 

TCP 헤더

1층은 4byte

TCP 헤더 크기: 4 * 5층 = 20 byte

6층// padding 은 배수를 맞춰주기 위해 사용한다. // 마지막 층은 지금은 사용하지 않는다.(제외)

TCP, UDP (4계층)의 상위 계층은 7계층(응용프로그램) 이다.

 

포트번호

  • TCP, UDP 프로토콜이 상위 계층에 제공하는 주소 표현 방식

TLS (port 443)

SSL (port 20)

 

TLS(전송 계층 보안, Transport Layer Security)는 인터넷에서 데이터의 안전한 전송을 보장하기 위해 설계된 암호화 프로토콜입니다

Well-known 포트

  • 많이 사용하는 인터넷 서비스에 고정된 포트 번호 할당

포트 숫자가 1024 보다 작으면 모두 Well-known 포트이다. (전세계 통용)

  • Source port : 보내는 쪽의 포트 // 웹서버 포트는 port 80
  • Sequence Number: 3계층 네트워크 계층까지는 데이터만 빨리가면 되었지만, 4계층에서는 데이터 전송의 신뢰성과 순서를 보장하는 데 필수적인 역할을 합니다.
  • Acknowlegement number : 말풍선 100개를 했는데 응답이 50번 까지만 받으면 100을 다 받기 위해 기다린다. 응답이 오지 않으면 51번 부터 다시 보낸다. - 상대가 어디까지 받았는지를 확인하는 것
  • Data Offset(= headerLength 20byte)
  • Reserved : 앞으로 예약된 것이 있다. (요즘은 사용하지 않아서 0 값을 넣는다)

Flag 각 1비트 (1비트는 경우의 수가 2개)

  • URG (urgent) : 패킷을 빠르게 처리 할 수 있는 방법 ( urgent 라고 빨리 보낼 수있는 것이 요즘은 없기 떄문에 사용하지 않는다 비트번호 0 으로 처리)
  • ACK : SYN 에서 의견을 물어보고 ACK 에서 대답을 한다. 응답하면 okay sign 응답을 안보내면 no
  • PSH (push) : 해더 해석이 다 되었으면 상위계층으로 올릴때 사용
  • RST (reset): 급한일이 있을때 너랑 이야기 안하고 끝남 FIN은 1의 신호를 받아야끝나지만 이건 내가 통보하는 방식임
  • SYN : 0하고 1밖에 없다고 가정하면, 나는 너하고 이야기하고 싶어라고 신호 1(말풍선)을 던지는 의견을 물어봄
  • FIN (finish) : 할말 다 끝나고 FIN을 1로 보내면 그 이후에 내가 어떤말을 하든 간에 듣지 못한다.
  • Window : 슬라이딩 윈도우 프로토콜과 같음 // 상대방이 초당 100 마디하면 난 능력이 안되 초당 50마디만 말해줘 라고 제어해주는 흐름제어장치
  • Checksum : 무결성을 확인하기 위함
  • Urgent Pointer : URG가 1이 되었을때 사용, 급한 일이 있을떄 사용하기 위함 // 요즘은 URG 를사용하지 않기 떄문에 비트번호가 0 이 되어야한다.

Sequence Number 는 정하기 나름 (보통 1로 시작)

  • Sequence number
  • ACK number : 다음에 수신하기를 원하는 데이터를 지정

6계층에서 내려온 것을 캡슐로 싸면 캡슐라이제이션


UDP - 8byte

비연결형 서비스를 제공

Best effort (빨리만 보내면 된다) 전달방식을 지원

실시간적 중요성을 하기 위해 생김 (헤더 처리가 없기 떄문)

신뢰성이 의미가 없을때 빨리 하기 위해서 사용

지금의 모든 것들은 TCP 를 사용한다.

지금 실시간 방송은 TCP 를 사용 // 엄밀히 따지만 실시간은 아니다 UDP를 사용해야함

ex) 프랑스에서 금메달 땃으면 바로 주는게 아니고 2~3초동안 데이터의 분실이 있나 확인하고 송출한다.

해커들이 명령어 때릴 떄는 UDP 를 사용한다 ( 응답을 받을 일이 없기 때문)



SYN Flooding

SYN Flood는 반개방 공격이라고도 하며, 보낸 SYN 요청에 대한 서버의 SYN-ACK에 응답하지 않고 SYN 요청만 마구잡이로 보내는 네트워크 계층 공격입니다. 결과적으로 많은 수의 열린 TCP Connection으로 인하여 서버의 리소스가 과도하게 소모되어 정상 트래픽의 처리를 어렵게 하면서 정상적인 새로운 Connection을 열 수 없으며, 이미 연결된 사용자의 Connection의 경우에도 서버가 올바르게 작동하기 어렵게 됩니다.

 


(4) 웹 구조 및 보안

 

1번문제 GET POST 메소드

HTTP 프로토콜에서 클라이언트가 서버에 요청을 보내는 두 가지 방법

GET :

  • GET 요청은 서버에서 리소스를 가져오는 데 사용됩니다. 일반적으로 GET 요청은 본문이 필요하지 않습니다. 요청할 URL만으로도 충분히 서버가 어떤 리소스를 반환해야 하는지를 알 수 있습니다.
  • 파라미터 값이 한줄으로 나온다. (글자수 제한 255자가 있다)

https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=test

 

POST : 

  • 파라미터 값이 안보이게 숨겨져있음 (어떤 인자값이 날라가는지 보이지 않기 때문에 안전하다고 하지만 web proxy tool을 사용할 경우 전부 보이기 떄문에 공격자 입장에서는 GET과 POST는 의미가 없습니다. (글자수 제한이 없다 서버적으로 보내야할 데이터가 많으면 POST 사용)

https://search.naver.com/search.naver

 

2번문제 응답값 200ok 

HTTP Version | 상태코드 | 코드설명

  • HTTP Version: 1.1: 현재 사용 중인 HTTP 프로토콜의 버전을 나타냅니다. 여기서 1.1은 HTTP/1.1 버전으로, 웹에서 가장 많이 사용되는 버전 중 하나입니다. HTTP는 주로 1.0, 1.1, 2.0, 3.0 등의 버전이 있습니다.
  • 상태 코드: 서버가 클라이언트의 요청을 처리한 후, 요청의 결과를 숫자로 표기하는 것입니다. 예를 들어:
    • 200 ok: 요청이 성공적으로 처리되었음을 의미합니다.
    • 404 not found: 요청한 페이지를 찾을 수 없음을 의미합니다.
    • 500 error: 서버 내부 오류가 발생했음을 의미합니다.
  • 코드 설명: 상태 코드에 대한 설명을 제공합니다. 예를 들어, 200 상태 코드는 "OK"라고 설명하며, 이는 요청이 성공적으로 처리되었음을 나타냅니다.

3번문제 File download 취약점 

파일 다운로드 취약점이란 서버에 업로드 된 파일을 다운로드 받을 수 있게 만들어진 서비스를 이용하여, 정해진 파일이 아닌 다른(시스템 파 일, 소스 코드 등)파일을 다운로드 받을 수 있는 취약점이다.

다른파일은 시스템파일(etc의 패스워드 파일, hosts 파일 같이 없어서는 안되는 파일들) 이나 소스 코드가 될 수 있다.

개발자가 의도하지않게 다른 파일을 의도하는 것

 

**커멘드 인젝션- 개발자가 의도하지않게 다른 파일도 같이 수행하는 것

 

기존 URL

http://freehack.bug/board/board_down.php3?file_name=c99.php

 

공격 실행

URL에 아래와 같이 작성하면 루프가 돌면서 etc/passwd 파일을 받을 수 있음

http://freehack.bug/board/board_down.php3?file_name=/../../../../../../etc/passwd 

 

./ 를 강제로 지우는 아래와 같은 코드가 있으면

-> ..// 이런식으로 두번 적으면 ./ 가 지워져도 ./ 한묶음이 남기 때문에 우회할 수 있다.

 

 

4번문제 Cross Site Script (CSRF) - client side

Cross Site Request Forgery, 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.

ex) 회원 정보 수정, 데이터 수정 또는 삭제, 비방/욕 댓글

 

- 해커의 악의적인 스크립트 게시글을 관리자가 읽으면 관리자 계정의 비밀번호가 해커가 설정한 비밀번호로 바뀔 수 있다.

- 클라이언트 사이드에서 계정정보를 바꾸는 공격 -> 클라이언트의 정보가 목표, 서버의 공격이 아니다.

 

  • 해커가 아래 스크립트를 이용해 악의적인 게시글(본문에 스크립트 삽입)을 작성한다.
  • 관리자가 게시글을 읽으면 아래의 스크립트에서 설정한 것처럼 관리자 계정의 비밀번호가 12345 로 바뀐다.

 

Server Side Request Forgery (SSRF) - server side

SSRF는 Server Side Request Forgery의 약자로 유사한 이름을 가진 CSRF(Cross Site Request Forgery) 와는 다르게 클라이언트 측의 요청 을 변조시키는 것이 아닌 서버 측 자체의 요청을 변조하여 공격자가 원하는 형태의 악성 행위를 서버에 던져주면 서버가 검증 없이 그대로 받아 그의 따른 행동/응답을 해주는 공격

 

* 공격자가 내부망에 있는 서버를 접근 하기 위해서는 직접 접근은 불가 (방화벽, IDS, IPS …. 등) 보안장치가 많다. 심지어 해커(공인아이피)에서 server(사설아이피) 가 보이지도 않는다.

-> 중간에 있는 server의 취약점(매개체역할)을 통해 서버(사설 아이피)를 공격할 수 있다.

보안대책

  • 내부 시스템과 상호 작용하는 변수에 불필요한 값이 입력될 경우 무효처리를 해야 됨
  • 변수에 입력된 주소가 올바른 주소가 맞는지 즉 신뢰하는 주소가 맞는지 재검증을 해야 됨

실습에서 hacker.bug 가 믿어도 되는 URL인지 확인할 수 있는 로직을 삽입해야한다.

접근할 수 있는 사이트만 접근할 수 있게하고 접근하면 안되는 사이트는 전부 거절 (화이트리스트)

정상적인 요청으로 공격하기 때문에 웹 방화벽에서 통제가 되지 않는다.

  • 여러 우회 공격 기법 중 대상 사이트에 대한 신뢰할 수 있는 도메인과 루프백 주소를 매칭하여 지정해둔 도메인을 요청하는 경우가 존재하기 때문에 요청 시 도메인 이름에 대한 검증도 수행

 

 

5 ???

 


(5) 정보보호 법 제도

망법 - 정보보호최고책임자, 정보보호 관리체계 인증(자세히보기)

개인정보보호법 - 정의, 수집/이용, 제공, 유출신고, 개인정보 책임자, 가명정보

https://brandonlog.tistory.com/101

 

 

 

@@ 정보보호 최고 책임자

정보보호 최고책임자는 대통령령에 의거 과기정통장관에게 보고해야하는데 -> 매출액, 회사 규모가 크면 안해도 됌(근데 시가총액큰애들은 겸직 금지임) -> 근데 정보보호 관련 업무는 또 겸직이 된대

 

정보보호 최고책임자는 다음 각 목의 업무를 총괄한다.

가. 정보보호 계획의 수립, 시행 및 개선

나. 정보보호 실태와 관행의 정기적 감사 및 개선

다. 정보보호 위험의 식별 평가 및 정보보호 대책 마련

라. 정보보호 교육과 모의 훈련 계획의 수립 및 시행

 

@@ 정보보호관리체계인증

 이 사람들은 제1항에 따른 인증을 과기정통장관에게 받아야한대 - 근데 국제인증이나 정보보호조치를 취했으면 일정부분 생략이 된대

  1. 전기통신사업을 하는 양반
  2. 집적정보통신시설 하는 양반
  3. 정보통신서비스 부분 일정 수준 넘는 놈들
     

정보보호관리체계인증 유효기간은 3년 다만 정보보호 관리등급을 받은 경우, 유효기간동안 제1항의 인증을 받은 것으로 간주한다.,

 

이래놓고 장관 일 능률을 위해 인증기관을만들어서 (KISA) 인증심사를 정해놓고 대리맡긴다네

 

인증기관들은 연 1회이상 사후관리를 실시하고 장관한테 보고해야한대 (KISA, 정보보호관리체계인증기관(SK쉴더스), 정보보호관리체계심사기관

 

장관은 정보보호관리체계인증 취소가 가능한데, 거짓, 인증기준미달, 사후관리 거부를 하면 취소한대 

 

@@ 개인정보보호법

개인의 자유와 권리를 보호하고, 나아가 개인의 존엄과 가치를 구현

 

개인정보 -> 살아있는 개인의 정보

  1. 개인을 알아볼 수 있는정보 
  2. 성명, 주민번호, 영상
  3. 결합하여 알아볼 수 있는 정보
  4. 가명정보 (가명처리: 개인정보 일부를 삭제해서 추가 정보 없이 개인을 알아볼 수 없음)

 

정보주체 권리 (처리에 관한 정보제공받을권리, 동의 여부 선택권리, 개인정보 열람권리, 처리정지,파기요구권리, 처리로인한 피해 구제받을 권리, 결정거부 및 설명요구 권리

 

@@정보 수집 및 이용

정보주체의 동의를 받거나 법령 또는 생명,재산 등 불가피한 경우, 개인정보처리자의 정당한 이익달성을 위한경우

 

정보 동의를 받을 때 정보주체에게 알려야할 목록

  1. 수집 이용목적
  2. 수집하려는 개인정보 항목
  3. 개인정보 보유 및 이용기간
  4. 동의 거부 권리 및 동의거부에 따른 불이익 내용

 

개인정보처리자는 정보주체의 개인정보를 제3자에게 제공할 수 있다. - 동의받았을때, + 대통령령으로 정하는 바에 따라 정보주체 동의없이 개인정보를 제공할 수 있다.

 

 

@@가명정보

개인정보처리자는 정보주체의 동의없이 가명정보를 처리할 수 있다.

3자에 제공하는 경우 특정 개인을 알아볼 수 있는 정보를 포함해서는 안된다.

연구를 위한 가명 개인정보처리자들의 통합은 전문기관에서만 수행한다.

 

개인정보처리자는 가명정보를 처리하고자하는 경우 / 가명정보처리목적, 제3자 제공시 제공받는 자, 가명정보의 처리기간 등 관련 기록을 보관해야하고 가명정보를 파기한 경우 파기날부터 3년 이상 보관하여야한다.

 

@@유출신고

개인정보처리자는 개인정보가 유출되면 정보주체에게 알려야한다. 

  1. 유출항목
  2. 시점과 경위
  3. 발생할 수 있는 피해를 최소화하기 위한 정보주체가 할 수 있는 방법에 대한 정보
  4. 대응조치 및 피해 구제절차
  5. 피해가 발생할 경우 신고 등을 접수할 수 있는 담당부서 및 연락처

 

개인정보처리자는 개인정보 유출을 알게 되었을 경우 72시간내에 서면등의 방법으로 전문기관(KISA)에 신고해야한다. , 천재지변시는 그 이후 신고해야함 / 정보주체 권익 침해 가능성이 자체조사에서 낮아졌다고 판단하면 신고 안해도됌

 

@@ 개인정보보호책임자

개인정보처리자는 개인정보보호책임자를 임명해야함

  1. 보호 계획의 수립 및 시행
  2. 처리실태 및 관행의 정기적 조사 및 개선
  3. 개인정보처리관련 불만의 처리 및 피해구제
  4. 유출 및 남용방지를 위한 내부통제시스템 구축
  5. 개인정보보호 교육계획의 수립 및 시행
  6. 관리 감독

 

해외 법인회사들은 개인정보 처리에 관한 국내대리인을 문서로 지정해야한다. 

  1. 개인정보 보호책임자의 업무
  2. 개인정보 유출 등의 통지 및신고
  3. 물품 서류등 자료의 제출 (국내 대리인은 국내 영업소가 있어야함)
  4. 국내 대리인 성명, 주소(영업점), 전화번호 및 전자우편주소 

국내대리인이 법을 위반한 경우 개인정보처리자가 그 행위를 한 것으로 본다.

 

 

 


 

(6) 시스템 보안 및 취약점 진단

 

 

Assembly 기계어와 일대일로 대응이 되는 컴퓨터 언어

 

레지스터 : CPU내에 존재하는 기억장치로 메모리 외 빠른 데이터 저장 및 읽기가 가능한 장치

 

범용레지스터: 연산 결과 저장, 산술 논리 연산, 주소 저장 등 다목적으로 사용

인덱스레지스터: 메모리 내 데이터 접근 시 주소를 가리킬 때 사용

 

RIP는 "Instruction Pointer"의 약자로, 현재 실행 중인 명령어의 주소를 가리키는 레지스터

 

fastcall : 레지스터에 사용할 인자를 적어서 사용한다

 

  • PUSH: 스택에 데이터를 추가하는 연산.
  • POP: 스택에서 데이터를 제거하고 반환하는 연산.

ESP: 스택의 최상위(top)를 가리키며, 함수 호출 및 리턴, 변수 저장 및 로드 시에 사용됩니다.

EBP: 스택의 최하위(bottom) 또는 함수의 스택 프레임의 기준 지점을 가리키며, 함수의 로컬 변수나 인수에 접근할 때 기준이 됩니다.

 

LEA 

메모리 주소를 계산하여 레지스터에 로드하는 데 사용되는 어셈블리 언어의 중요한 명령어입니다. 

이를 통해 복잡한 주소 계산을 간편하게 수행, 포인터 연산이나 배열 처리에 유용합니다. 

(두줄로 적어야 할 코드를 LEA 를 사용하면 한줄에 요약해서 적을 수 있다.)

 

1번문제 Canary

  • 스택 오버플로우 보호 완화 기법(mitigation)
  • 함수 호출 시 카나리 값을 스택 프레임의 최상단에 저장, 함수 종료 시 스택 오버플로우를 검사

Master Canary

  • 로컬 카나리는 함수 종료 시 검사를 위해 마스터 카나리와 비교 -> 값이 다르면 스택오버플로우가 발생했다고 판단하고 프로그램을 비정상 종료시킴 (stack smashing detected error 발생)
  • 일반적으로 마스터 카나리는 전역 공간에 저장되나 쓰레드에서는 마스터 카나리가 스택 영역에 저장

 

그렇다면 카나리를 우회하는 법이 있을까?

만약 카나리의 값과 마스터카나리값을 동일한 문자로 덮어버린다면 우회할 수 있다.

 

2번문제 ROP (Return Oriented Programming) 공격은 어떨때 사용가능한가

  • ROP는 주로 실행 방지 메커니즘(NX 비트 등)을 우회하기 위해 사용됩니다. 이 기술은 악의적인 코드를 직접 삽입하는 대신, 기존의 실행 가능한 코드 조각(“gadget”)을 사용하여 원하는 동작을 수행합니다. - 버퍼오버플로우 취약점 이용
  • 스택 주소는 실행 할 수가 없는데 코드영역은 CPU가 실행시켜야 할 코드가 들어가있으니 리턴할떄 쉘코드를 스택에 쓰고 스택으로가는게 아니라 코드영역으로 가면 어떨까 하는것
  • Idea: 바이너리에 존재하는 코드를 재활용
  • “Gadget”: pop rdi ; pop rsi ; ret
  • 스택을 공격자가 조작한 입력으로 overwrite
  • “gadget”을 연결해 프로그램 실행 흐름 조작

 

3번문제 Use After Free

 Dangling pointer: 해제된 영역의 포인터를 가리키고 있는 포인터

 해제된 영역의 포인터를 계속 들고 읽을 수 있다면?

 

댕글링포인터와 관련이 있다.

 

이미 해제된 포인터인데 그 값을 계속해서 가지고 있기 때문에 1번으로 다시 읽어도 읽을 수 있는데 심지어 1번에 새드가 저장되어있고 2번해도 새드가 잘 나온다.

4번문제 Seccomp

프로세스가 사용할 수 있는 시스템 콜을 제한하는 샌드박스 보안 기능

(메모리보호기능은 아니고 샌드박스 보안기능임)

  • 리눅스 커널 샌드박스 보안 기능
  • 프로그램을 보호된 영역에서 동작해 시스템이 조작되는 것을 방지
  • 프로세스가 사용할 수 있는 시스템 콜을 제한

 

5번문제 Timing-based Side Channel Attack

  문자열씩 비교하면서 값이 다르면 프로그램 종료, 값이 같으면 기다리게 만듬
-> 타임아웃을 통해 flag 검출한다 / 시간이 오래걸리면 첫 문자열이 f 겠구나 하고 체크하고 넘어갈 수있음
(시간의 차를 기반으로 플래그를 읽어내려고 함)

 

실행시간을 비교한다

정상적일떄는

같은값이면 계속 본다.

정상작동하는지 시간을 비교한다.

 


(7) 리눅스 기초

 

1번문제 ARP

IP 네트워크 주소를 데이터 링크 프로토콜에서 사용하는 하드웨어 주소(Mac addr) 에 매핑하기 위해 인터넷 프로토콜 에서 사용하는 프로토콜입니다

 

ping 10.0.2.17 (목적지 아이피주소)

나의 IP 주소 10.0.2.15

목적지 IP 주소 10.0.2.17

출발지 MAC주소는 (나의 MAC주소)

내부망에 있는 10.0.2.17 에게 ICMP 패킷을 전송한다는 말

패킷전송을 하려면 목적지 MAC 주소가 필요하다. → 어떻게 알아내냐면 ARP 브로드캐스트 를뿌려서 알아낸다. (누가 10.0.2.17을 가지고 있어? whohas)

2번문제 top의 CPU 점유율

3번문제 free명령어 결과설명

리눅스에서 free 명령어는 시스템의 메모리 사용 현황을 보여줍니다. 주로 다음과 같은 정보를 제공합니다:

  1. total: 총 메모리 용량.
  2. used: 사용 중인 메모리 양.
  3. free: 사용 가능한 메모리 양.
  4. shared: 여러 프로세스 간에 공유되는 메모리 양.
  5. buff/cache: 파일 시스템 캐시와 버퍼에 사용되는 메모리 양.
  6. available: 현재 유저 프로세스가 사용할 수 있는 메모리 양.

Available 메모리: 사용 가능한 메모리 양을 나타내며, 유저 프로세스가 사용할 수 있는 메모리의 추정치입니다. 이는 free, buff/cache에서 시스템 예약 메모리를 빼서 계산됩니다. 따라서 free 메모리가 많더라도, 실제 사용 가능한 메모리는 더 적을 수 있습니다.

 

 

4번문제 Buffered I/O

Direct I/O vs Buffered I/O

  • Direct I/O : CPU가 DISK 로 바로 때리는 방식
  • Buffered I/O : CPU가 DRAM 을 거치고 DISK 를 가는 방식 ( DRAM에 자주 access 하는 게 메모리에 남겨져 있어서 buffered 가 direct보다 빠르다

 

Buffered I/O: 파일 입출력을 할 때, 데이터를 직접 디스크에 쓰지 않고 메모리에 버퍼를 사용하여 효율적으로 처리합니다. 이 과정에서 페이지 캐시를 활용하여 성능을 향상시킵니다.

 

5번문제 시스템 이벤트 두가지

  • 인터럽트: 하드웨어나 소프트웨어가 CPU의 작업을 중단하고 이벤트를 처리하도록 하는 신호입니다.
    • 타이머 인터럽트: 주기적으로 발생하여 프로세스 스케줄링 등을 수행합니다.
    • 네트워크 인터럽트: 네트워크 패킷 수신 시 발생합니다.
  • 예외: 특정 이벤트가 발생했을 때 처리하는 메커니즘입니다.
    • 시스템 호출 (syscall): 사용자 공간에서 커널 공간으로 요청을 전달하는 방법입니다.
    • 페이지 폴트 (page fault): 요청된 페이지가 메모리에 존재하지 않을 때 발생하며, 페이지를 메모리에 로드하는 과정이 필요합니다.

 

 


 

 

네트워크 한번에 이해하자

 

응용프로그램

L7 : URL

 

—-

전송

L4 : port, TCP(연결형)/UDP(비연결형) (세그먼트) 헤더 크기 20byte

전송오류, 긍정응답,부정응답프레임, 프레임분실 -> 순서 번호, 흐름제어(상대방한테 데이터를 줄때 상대방이 받는 응답의 속도에 맞춰서 흐름 제어를 한다. (슬라이딩 윈도우 프로토콜))

 

슬라이딩 윈도우 프로토콜

윈도우 크기: 송신자가 한 번에 전송할 수 있는 데이터의 양을

윈도우 하단 값 : 현재 수신자가 수신할 수 있는 데이터의 시작 지점

 

수신자가 윈도우 하단 값을 조정하는 이유:

수신자는 자신의 버퍼 크기 및 처리 능력에 따라 윈도우 하단 값을 조정합니다. 만약 수신자의 버퍼가 가득 차면, 수신자는 송신자에게 더 이상 데이터를 보내지 못하도록 하여 데이터 손실을 방지합니다.

 

TLS(전송 계층 보안, Transport Layer Security)는 인터넷에서 데이터의 안전한 전송을 보장하기 위해 설계된 암호화 프로토콜

 

포트 숫자가 1024 보다 작으면 모두 Well-known 포트

 

UDP(비연결형) - 신뢰성이 의미가 없을때 빨리 하기 위해서 사용

 

3way handshake(전송계층에서 일어남) -> SYN Flooding 공격 (SYN만 마구잡이로 보냄 서버의 리소스가 과도하게 소모되어 정상 트래픽의 처리를 어렵게함)

 

—-

네트워크 (패킷) 헤더 크기 20byte

L3 : IP / BGP Hijacking - 네트워크 경로를 악의적으로 변경하여 트래픽을 가로채는 공격

패킷의 최대사이즈는 1500

 

1기가 / 1500byte (패킷의 최대 사이즈)

하지만 헤더 20을 빼면 1480 만 한번에 전송될 수 있다

 

물리, 데이터링크 (이더넷 =( LAN = MAC = 1,2 계층 = 물리적), 프레임, 헤더 크기는 14byte

L1,2 : MAC / ARP spoofing - 네트워크에서 ARP를 조작하여 데이터 전송을 가로채는 방식

 

—-

Smurf 공격 : 브로드캐스트 응답받을 IP 주소를 변조하여 공격대상자 IP 주소에 보내게 만들어 Dos공격을 하는 기법

BGP : AS(자율 시스템) 간에 라우팅 정보를 교환하는 프로토콜

BGP Hijacking : 네트워크 경로를 악의적으로 변경하여 트래픽을 가로채는 공격

ROP (Return Oriented Programming) 공격: 악의적인 코드를 직접 삽입하는 대신, 기존의 실행 가능한 코드 조각(“gadget”)을 사용하여 원하는 동작을 수행 - 버퍼오버플로우 취약점 이용

 

Dangling pointer: 해제된 영역의 포인터를 가리키고 있는 포인터

 

Seccomp: 프로세스가 사용할 수 있는 시스템 콜을 제한하는 샌드박스 보안 기능

 

 

비트 계산법

16진수는 2^4이기때문에 = 4비트이다.

‘영’ 4비트 ‘팔’4비트 ‘영’4비트 ‘영’4비트

8비트+ 8비트 = 2바이트

 

300x250

+ Recent posts