전체 글 (25)

01
03

입사 전까지 펑펑 놀려고 했는데 양심에 찔려서 책을 펼쳐본다...

우리나라는 실무에서 참고하는 종목이 총 3가지 정도인 것 같다

OWASP TOP 10, 국정원 8대 점검항목 및 행정안전부 WEB 보안 취약점 점 기준 등등...

OWASP TOP 10

은 3년에서 4년마다 웹 어플리케이션 취약점 중 가장 영향력 있고 위협적인 취약점 10개를 선정하여 발표한다. 최신 업데이트 목록은 2018년에 발표되었다. 현재의 OWASP Top 10 은 다음과 같다.

  1. Injection
  2. Broken Authentication
  3. Sensitive Data Exposure
  4. XML External Entities (XXE)
  5. Broken Access control
  6. Security misconfigurations
  7. Cross Site Scripting (XSS)
  8. Insecure Deserialization
  9. Using Components with known vulnerabilities
  10. Insufficient logging and monitoring

1. Injection
인젝션은 공격자가 웹 어플리케이션으로 비정상적인 명령어, 쿼리 등을 보내 시스템에 접근할 수 있는 취약점이다. 공격자는 개발자의 의도와는 다른 접근으로 시스템의 데이터를 변조, 수정, 유출하는 악의적인 행동을 할 수 있다. 대표적으로 우리가 흔히 아는 SQL Injection 이 있다. Injection 취약점은 오래전부터 위협적인 취약점으로 알려져 많은 대응 방안이 나왔지만 여전히 이 취약점으로 인한 피해 사례가 발생하고 있다. 그 이유는 계속해서 새로운 Injection 기법이 나오기 때문도 있지만, 기존의 대응 방안을 제대로 수행하지 않고 있다는 점도 있다.

2. Broken Authentication (취약한 인증)
인증 및 세션 관리와 관련된 웹 어플리케이션의 기능이 잘못 구현되어 공격자가 암호, 키 또는 세션 토큰을 위험에 노출시키거나 일시적 또는 영구적으로 다른 사용자의 권한 획득을 위해 악용하도록 허용할 수 있는 취약점이다. 취약한 인증은 웹에서 매우 일반적으로 발견할 수 있으며 여려 유형이 존재한다. 예를 들어, brute force 공격이 허용된다거나, 약한 암호화를 사용하고 있다거나, 세션 ID 를 제대로 관리하지 않는다거나 등이 있다. 
 
3. Sensitive Data Exposure (민감한 데이터 노출)
개인 식별 정보나 신용 정보가 대표적인 민감 데이터라고 할 수 있다. 웹 어플리케이션마다 중요한 민감 데이터를 취급하고 있을 것이며 이를 올바르게 보호하지 않는다면 공격자에게 노출될 수 있다. 민감한 데이터 노출은 저장되어 있는 데이터일 수도 있고 전송중인 데이터일 수도 있다. 데이터를 평문 전송하는 것이 그 예이다. 현재에도 많은 웹 어플리케이션의 암호화되어 있지 않는 평문 데이터들이 공격자에게 노출되어 있을 것이다.

4. XML External Entities (XXE)
취약하게 설정된 XML parser에 의해 공격자가 XML 문서에서 외부 엔티티를 이용하여 공격자가 의도하는 외부 URL 을 실행시킨 뒤, 서버의 로컬파일 정보 등을 출력하거나 DOS 공격을 수행할 수 있는 취약점이다.

5. Broken Access Control (취약한 접근 통제)
인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되어 있지 않다면, 공격자는 이를 악용하여 다른 사용자 계정에 접근하거나 중요 파일 열람, 다른 사용자 데이터 수정, 액세스 권한 변경 등과 같은 악의적인 행위를 할 수 있다. 대표적인 타겟이 바로 관리자 페이지이다. 접근 제한이 제대로 되어 있지 않는 관리자 페이지는 공격자의 공격 루트가 된다. SSH, FTP 와 같이 서버에 액세스할 수 있는 서비스들도 접근 제한이 제대로 되어 있지 않다면 공격자에게 악용될 수 있다.

6.  Security Misconfiguration (잘못된 보안 구성)
안전하지 않은 기본 구성, 불완전한 구성 또는 임시 구성, 개방된 클라우드 스토리지, 잘못 구성된 HTTP 헤더 및 민감한 정보가 포함된 자세한 에러 메시지 등으로 인한 취약점이다. 불필요한 기능 (포트, 서비스, 페이지, 계정) 등이 활성화 되어있으면 공격자의 공격루트가 된다. 그리고 자세한 오류 메시지는 Blind SQL Injection 과 같은 공격에 사용될 수 있다. 만약 시스템을 업그레이드 했다면 최신 보안 기능이 비활성화되어 있을 수도 있다.

7. Cross-Site Scripting (XSS)
XSS 는 공격자가 피해자의 브라우저에 악의적인 스크립트를 넣는 공격 기법이다. 공격자는 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있도록 허용할 수 있다.

8. Insecure Deserialization (안전하지 않은 역직렬화)
- 직렬화 : 객체를 직렬화하여 전송 가능한 형태로 만드는 것
- 역직렬화 : 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원하는 것
데이터를 역직렬화하는 과정에서 원격코드 실행이나 권한 상승 등의 취약점이 발생할 수 있다.

9. Using Components with Known Vulnerabilities (알려진 취약점이 있는 구성 요소 사용)
라이브러리, 프레임워크 및 다른 소프트웨어 모듈 같은 컴포넌트는 어플리케이션과 같은 권한으로 실행된다. 만약에 취약한 컴포넌트가 악용된 경우, 이는 심각한 데이터 손실을 일으키거나 서버가 장악된다. 알려진 취약점이 있는 구성 요소를 사용하는 어플리케이션과 API는 어플리케이션 방어를 약화시키고 다양한 공격과 영향을 줄 수 있다.

10. Insufficient Logging & Monitoring (불충분한 로깅 및 모니터링)
불충분한 로깅 및 모니터링, 사고 대응의 비효율적인 통합 또는 누락과 함께 공격자는 시스템을 추가로 공격하고 지속성을 유지하며 더 많은 시스템을 중심으로 공격할 수 있도록 만들고, 데이터를 변조, 추출 또는 파괴할 수 있다.

국정원 8대 취약점


1. 디렉토리 리스팅 취약점
홈페이지의 속성을 설정하는‘웹사이트 등록정보’에 특정디렉토리에 대하여 ‘디렉토리 검색’ 항목이 체크되어 있거나(IIS 웹서버), ‘httpd.conf 파일’에서‘Indexes’옵션이 ON되어 있는 경우(아파치 웹서버)
인터넷 사용자에게 모든 디렉토리 및 파일 목록이 보여지게 되고, 파일의 열람 및 저장도 가능하게 되어 비공개 자료가 유출될 수 있다.

2. 파일 다운로드 취약점- OWASP 와 중복
게시판 등에 저장된 자료에 대해‘다운로드 스크립트’를 이용하여 다운로드 기능을 제공하면서, 대상 자료파일의 위치 지정에 제한조건을 부여하지 않았을 경우
URL칸의 다운로드 스크립트의 인수값에‘../’문자열 등을 입력하여 시스템 디렉토리 등에 있는 /etc/passwd와 같은 비공개 자료들이 유출될 수 있다.
*특히, 리눅스 및 유닉스 계열의 웹서버에 각별한 주의가 필요하다.

3. 크로스 사이트 스크립트 취약점 - OWASP 와 중복
게시판에 새 게시물을 작성하여 등록할 때와 같이 사용자의 입력을 받아 처리하는 웹 응용프로그램에서 입력 내용에 대해 실행코드인 스크립트의 태그를 적절히 필터링하지 않을 경우에
악의적인 스크립트가 포함된 게시물을 등록할 수 있어 해당 게시물을 열람하는 일반 사용자의 PC로부터 개인정보인 쿠키를 유출할 수 있는 등의 피해를 초래할 수 있다.

4. 파일 업로드 취약점 - OWASP 와 중복
첨부파일 업로드를 허용하는 홈페이지 게시판에서 .php, .jsp 등의 확장자 이름의 스크립트 파일의 업로드를 허용할 경우에
해커가 악성 실행 프로그램을 업로드한 후에 홈페이지 접속 방식으로 원격에서 서버 컴퓨터의 시스템 운영 명령어를 실행시킬 수 있다.

5. WebDAV 취약점 - 원격 실행
윈도우 서버 컴퓨터에서 기본으로 설치되는 원격관리기능인 WebDAV가 계속 사용가능하도록 설정되어 있고, WebDAV 라이브러리 파일의 속성 및 홈페이지 디렉토리에 쓰기 권한이 모두 허용되어 있는 경우
해커가 WebDAV 도구를 사용, 원격에서 홈페이지 디렉토리에 임의의 파일을 삽입하여 화면을 변조할 수 있다.

6. 테크노트(Tech note)취약점
국내에서 개발되어 무료 배포중인 게시판 제작 프로그램‘테크노트’의 일부 CGI프로그램들에서 인수값 처리시에 ‘|’문자 이후에 나오는 컴퓨터 운영 명령어가 실행될 수 있는 결함이 있음
해커는 홈페이지 접속 방식으로 컴퓨터 명령어를 실행하여 화면을 변조하거나 컴퓨터를 조작할수 있다.
'테크노트’는 리눅스 및 유닉스 계열의 홈페이지 서버 컴퓨터에 주로 사용되고, 윈도우 계열의 홈페이지에서도‘Perl’이 지원될 경우에 사용될 수 있다.

7. 제로보드(ZeroBoard)취약점
국내에서 개발되어 무료 배포중인 게시판 제작 프로그램 ‘제로보드’의 일부 PHP프로그램이 원격에 있는 PHP파일을 실행할 수 있는 결함이 있어
해커는 홈페이지 접속 방식으로 컴퓨터 명령어를 실행하여 화면을 변조하거나 컴퓨터를 조작할수 있다.
'제로보드’는 리눅스 및 유닉스 계열의 홈페이지 서버 컴퓨터에 주로 사용되고, 윈도우 계열의 홈페이지에서도‘PHP’가 지원될 경우에 사용될 수 있다.

8. SQL injectin 취약점 - OWASP와 중복
웹브라우저 주소(URL)창 또는 사용자 ID 및 패스워드 입력화면 등에서 데이터베이스 SQL문에 사용되는 문자기호(' 및 ")의 입력을 적절히 필터링 하지 않은 경우에
해커가 SQL문으로 해석될 수 있도록 조작한 입력으로 데이터베이스를 인증절차없이 접근, 자료를 무단 유출하거나 변조할 수 있다.

행정안전부 소프트웨어 보안 취약점 기준

입력데이터 검증 및 표현 

1. DBMS 조회 및 결과 검증 - 입출력 검증
DBMS 조회시 질의문(SQL) 내 입력값과 그 조회결과에 대한 유효성 검증방법(필터링 등) 설계 및 유효하지 않은 값에 대한 처리방법 설계

2. XML 조회 및 결과 검증
XML 조회시 질의문(XPath, XQuery 등) 내 입력값과 그 조회결과에 대한 유효성 검증방법(필터링 등) 설계 및 유효하지 않은 값에 대한 처리방법 설계

3. 디렉토리 서비스 조회 및 결과 검증
디렉토리 서비스(LDAP 등)를 조회할 때 입력값과 그 조회결과에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계

4. 시스템 자원 접근 및 명령어 수행 입력값 검증
시스템 자원접근 및 명령어를 수행할 때 입력값에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계

5. 웹 서비스 요청 및 결과 검증
웹 서비스(게시판 등) 요청(스크립트 게시 등)과 응답결과(스크립트를 포함한 웹 페이지)에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계

6. 웹 기반 중요 기능 수행 요청 유효성 검증
비밀번호 변경, 결제 등 사용자 권한 확인이 필요한 중요기능을 수행할 때 웹 서비스 요청에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계

7. HTTP 프로토콜 유효성 검증
비정상적인 HTTP 헤더, 자동연결 URL 링크 등 사용자가 원하지 않은 결과를 생성하는 HTTP 헤더·응답결과에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계

8. 허용된 범위내 메모리 접근
해당 프로세스에 허용된 범위의 메모리 버퍼에만 접근하여 읽기 또는 쓰기 기능을 하도록 검증방법 설계 및 메모리 접근요청이 허용범위를 벗어났을 때 처리방법 설계

9. 보안기능 입력값 검증
보안기능(인증, 권한부여 등) 입력 값과 함수(또는 메소드)의 외부입력 값 및 수행결과에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계

10. 업로드·다운로드 파일 검증 - 파일 검증
업로드·다운로드 파일의 무결성, 실행권한 등에 관한 유효성 검증방법 설계 및 부적합한 파일에 대한 처리방법 설계

보안기능

1. 인증 대상 및 방식 - 인증 관리
중요정보·기능의 특성에 따라 인증방식을 정의하고 정의된 인증방식을 우회하지 못하게 설계

2. 인증 수행 제한
반복된 인증 시도를 제한하고 인증 실패한 이력을 추적하도록 설계

3. 비밀번호 관리
생성규칙, 저장방법, 변경주기 등 비밀번호 관리정책별 안전한 적용방법 설계

4. 중요자원 접근통제 - 접근권한 관리
중요자원(프로그램 설정, 민감한 사용자 데이터 등)을 정의하고, 정의된 중요자원에 대한 신뢰할 수 있는 접근통제 방법(권한관리 포함) 설계 및 접근통제 실패 시 처리방법 설계

5. 암호키 관리 - 암호관리
암호키 생성, 분배, 접근, 파기 등 암호키 생명주기별 암호키 관리방법을 안전하게 설계
암호
관리

6. 암호연산
국제표준 또는 검증필 암호모듈로 등재된 안전한 암호 알고리즘을 선정하고 충분한 암호키 길이, 솔트, 충분한 난수 값을 적용한 안전한 암호연산 수행방법 설계

7. 중요정보 저장 - 중요정보 관리
중요정보(비밀번호, 개인정보 등)를 저장·보관하는 방법이 안전하도록 설계

8. 중요정보 전송
중요정보(비밀번호, 개인정보, 쿠키 등)를 전송하는 방법이 안전하도록 설계 

에러처리

1. 예외처리 - 에러처리
오류메시지에 중요정보(개인정보, 시스템 정보, 민감 정보 등)가 노출되거나, 부적절한 에러·오류 처리로 의도치 않은 상황이 발생하지 않도록 설계 

세션통제

1. 세션통제 - 세션통제
다른 세션 간 데이터 공유금지, 세션ID 노출금지, (재)로그인시 기존 세션ID 재사용금지 등 안전한 세션 관리방안 설계

입력데이터 검증 및 표현

1. SQL 삽입
SQL 질의문을 생성할 때 검증되지 않은 외부 입력 값을 허용하여 악의적인 질의문이 실행가능한 보안약점

2. 코드 삽입
프로세스가 외부 입력 값을 코드(명령어)로 해석·실행할 수 있고 프로세스에 검증되지 않은 외부 입력 값을 허용한 경우 악의적인 코드가 실행 가능한 보안약점

3. 경로 조작 및 자원 삽입
시스템 자원 접근경로 또는 자원제어 명령어에 검증되지 않은 외부 입력값을 허용하여 시스템 자원에 무단 접근 및 악의적인 행위가 가능한 보안약점

4. 크로스사이트 스크립트
사용자 브라우저에 검증되지 않은 외부 입력값을 허용하여 악의적인 스크립트가 실행 가능한 보안약점

5. 운영체제 명령어 삽입
운영체제 명령어를 생성할 때 검증되지 않은 외부 입력값을 허용하여 악의적인 명령어가 실행 가능한 보안약점

6. 위험한 형식 파일 업로드
파일의 확장자 등 파일형식에 대한 검증없이 파일 업로드를 허용하여 공격이 가능한 보안약점

7. 신뢰되지 않는 URL 주소로 자동접속 연결
URL 링크 생성에 검증되지 않은 외부 입력값을 허용하여 악의적인 사이트로 자동 접속 가능한 보안약점

8. 부적절한 XML 외부 개체 참조
임의로 조작된 XML 외부개체에 대한 적절한 검증 없이 참조를 허용하여 공격이 가능한 보안약점 

9. XML 삽입
XQuery, XPath 질의문을 생성할 때 검증되지 않은 외부 입력값을 허용하여 악의적인 질의문이 실행가능한 보안약점

10. LDAP 삽입
LDAP 명령문을 생성할 때 검증되지 않은 외부 입력 값을 허용하여 악의적인 명령어가 실행가능한 보안약점

11. 크로스사이트 요청 위조
사용자 브라우저에 검증되지 않은 외부 입력 값을 허용하여 사용자 본인의 의지와는 무관하게 공격자가 의도한 행위가 실행 가능한 보안약점

12. 서버사이드 요청 위조
서버 간 처리되는 요청에 검증되지 않은 외부 입력값을 허용하여 공격자가 의도한 서버로 전송하거나 변조하는 보안약점

13. HTTP 응답분할
HTTP 응답헤더에 개행문자(CR이나 LF)가 포함된 검증되지 않은 외부 입력값을 허용하여 악의적인 코드가 실행 가능한 보안약점

14. 정수형 오버플로우
정수형 변수에 저장된 값이 허용된 정수 값 범위를 벗어나 프로그램이 예기치 않게 동작 가능한 보안약점

15. 보안기능 결정에 사용 되는 부적절한 입력값
보안기능(인증, 권한부여 등) 결정에 검증되지 않은 외부 입력값을 허용하여 보안기능을 우회하는 보안약점

16. 메모리 버퍼 오버플로우
메모리 버퍼의 경계값을 넘어서 메모리값을 읽거나 저장하여 예기치 않은 결과가 발생하는 보안약점

17. 포맷 스트링 삽입
printf 등 포맷 스트링 제어함수에 검증되지 않은 외부 입력값을 허용하여 발생하는 보안약점
* 포맷 스트링: 입·출력에서 형식이나 형태를 지정해주는 문자열

보안 기능

1. 적절한 인증 없는 중요기능 허용
중요정보(금융정보, 개인정보, 인증정보 등)를 적절한 인증없이 열람(또는 변경) 가능한 보안약점

2. 부적절한 인가
중요자원에 접근할 때 적절한 제어가 없어 비인가자의 접근이 가능한 보안약점

3. 중요한 자원에 대한 잘못된 권한 설정
중요자원에 적절한 접근 권한을 부여하지 않아 중요정보가 노출·수정 가능한 보안약점

4. 취약한 암호화 알고리즘 사용
중요정보(금융정보, 개인정보, 인증정보 등)의 기밀성을 보장할 수 없는 취약한 암호화 알고리즘을 사용하여 정보가 노출 가능한 보안약점

5. 암호화되지 않은 중요정보
중요정보(비밀번호, 개인정보 등) 전송 시 암호화 또는 안전한 통신채널을 이용하지 않거나, 저장 시 암호화하지 않아 정보가 노출 가능한 보안약점

6. 하드코드된 중요정보
소스코드에 중요정보(비밀번호, 암호화키 등)를 직접 코딩하여 소스코드 유출 시 중요정보가 노출되고 주기적 변경이 어려운 보안약점

7. 충분하지 않은 키 길이 사용
암호화 등에 사용되는 키의 길이가 충분하지 않아 데이터의 기밀성·무결성을 보장할 수 없는 보안약점

8. 적절하지 않은 난수 값 사용
사용한 난수가 예측 가능하여, 공격자가 다음 난수를 예상해서 시스템을 공격 가능한 보안약점

9. 취약한 비밀번호 허용
비밀번호 조합규칙(영문, 숫자, 특수문자 등) 미흡 및 길이가 충분하지 않아 비밀번호가 노출 가능한 보안약점

10. 부적절한 전자서명 확인
프로그램, 라이브러리, 코드의 전자서명에 대한 유효성 검증이 적절하지 않아 공격자의 악의적인 코드가 실행 가능한 보안약점

11. 부적절한 인증서 유효성 검증
인증서에 대한 유효성 검증이 적절하지 않아 발생하는 보안약점

12. 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출
쿠키(세션 ID, 사용자 권한정보 등 중요정보)를 사용자 하드디스크에 저장되어 중요정보가 노출 가능한 보안약점

13. 주석문 안에 포함된 시스템 주요정보
소스코드 주석문에 인증정보 등 시스템 주요정보가 포함되어 소스코드 노출 시 주요정보도 노출 가능한 보안약점

14. 솔트 없이 일방향 해쉬함수 사용
솔트*를 사용하지 않고 생성된 해쉬 값으로부터 공격자가 미리 계산된 레인보우 테이블을 이용하여 해쉬 적용 이전 원본 정보를 복원가능한 보안약점
* 해쉬 적용하기 전 평문인 전송정보에 덧붙인 무의미한 데이터

15. 무결성 검사없는 코드 다운로드
소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받아 실행하는 경우, 공격자의 악의적인 코드가 실행 가능한 보안약점

16. 반복된 인증시도 제한 기능 부재
인증 시도 수를 제한하지 않아 공격자가 반복적으로 임의 값을 입력하여 계정 권한을 획득 가능한 보안약점

시간 및 상태 

1. 경쟁조건: 검사 시점과 사용 시점(TOCTOU)
멀티 프로세스 상에서 자원을 검사하는 시점과 사용하는 시점이 달라서 발생하는 보안약점

2. 종료되지 않는 반복문 또는 재귀 함수
종료조건 없는 제어문 사용으로 반복문 또는 재귀함수가 무한히 반복되어 발생할 수 있는 보안약점

에러처리

1. 오류 메시지 정보노출
오류메시지나 스택정보에 시스템 내부구조가 포함되어 민감한 정보, 디버깅 정보가 노출 가능한 보안약점

2. 오류상황 대응 부재
시스템 오류상황을 처리하지 않아 프로그램 실행정지 등 의도하지 않은 상황이 발생 가능한 보안약점

3. 부적절한 예외 처리
예외사항을 부적절하게 처리하여 의도하지 않은 상황이 발생 가능한 보안약점

코드오류

1. Null Pointer 역참조
변수의 주소 값이 Null인 객체를 참조하는 보안약점

2. 부적절한 자원 해제
사용 완료된 자원을 해제하지 않아 자원이 고갈되어 새로운 입력을 처리할 수 없는 보안약점

3. 해제된 자원 사용
메모리 등 해제된 자원을 참조하여 예기치 않은 오류가 발생하는 보안약점

4. 초기화되지 않은 변수 사용
변수를 초기화하지 않고 사용하여 예기치 않은 오류가 발생하는 보안약점

5. 신뢰할 수 없는 데이터의 역직렬화
악의적인 코드가 삽입·수정된 직렬화 데이터를 적절한 검증 없이 역질렬화하여 발생하는 보안약점
*직렬화: 객체를 전송 가능한 데이터형식으로 변환
*역직렬화: 직렬화된 데이터를 원래 객체로 복원

캡슐화

1. 잘못된 세션에 의한 데이터 정보 노출
잘못된 세션에 의해 인가되지 않은 사용자에게 중요정보가 노출 가능한 보안약점

2. 제거되지 않고 남은 디버그 코드
디버깅을 위한 코드를 제거하지 않아 인가되지 않은 사용자에게 중요정보가 노출 가능한 보안약점

3. Public 메소드부터 반환된 Private 배열
Public으로 선언된 메소드에서 Private로 선언된 배열을 반환(return)하면 Private 배열의 주소 값이 외부에 노출되어 해당 Private 배열값을 외부에서 수정 가능한 보안약점

4. Private 배열에 Public 데이터 할당
Public으로 선언된 데이터 또는 메소드의 인자가 Private으로 선언된 배열에 저장되면 이 Private 배열을 외부에서 접근하여 수정 가능한 보안약점

API 오용

1. DNS lookup에 의존한 보안결정
도메인명 확인(DNS lookup)으로 보안결정을 수행할 때 악의적으로 변조된 DNS 정보로 예기치 않은 보안위협에 노출되는 보안약점

2. 취약한 API 사용
취약한 함수를 사용해서 예기치 않은 보안위협에 노출되는 보안약점



nis_guide_lines_2021_11_1.hwp
1.81MB
행정·공공 웹사이트 구축·운영 가이드(2017년 10월).pdf
3.16MB
소프트웨어 보안약점 기준(제52조 관련).hwp
0.03MB



 

 

 

 

 

 

 

 

 

 

 

출처 - https://mikrkosmos97.tistory.com/101 

'보안' 카테고리의 다른 글

데이터베이스 서버를 따로 두는 이유  (0) 2022.10.12
WEB과 WAS  (0) 2022.10.12
ARQ란?  (0) 2022.10.12
2021. 01. 18 _ 리버스 엔지니어링이란  (0) 2021.01.18
시스템 해킹 보안 기초  (0) 2020.11.22
COMMENT
 
12
30

사실 수료한 건 일주일 전인데 이제야 후기를 쓴다.......

그 사이에 많은 일이 있었기 때문........ㅡ 

알바 취업도 하고 회사 취업도 해버렸다... 이중취업

당일 아침에 10시 기차 타고 올라갔는데 생각보다 버스가 오래 걸려서 늦었다 2시부터였는데 2시 5분인가에 도착함 

양재 AT센터
뛰어들어가다 후딱 찍음

들어가니까 이미 시작하고 있었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅠㅠㅠ 재밌어보였는데.., 늦어서 조금 밖에 못들음 ㅠㅠㅠㅠ 

https://www.youtube.com/watch?v=F2A6ALYFuZU 

해당 내용에 대해서 강의하고 계셨다 

그리고 ........... 인증서 수료 하고 프로젝트 발표.... 단체 사진이 있었다

얼굴 나오는 거 싫어서 메타버스 사진으로 대체함 

끝나고 나서 친구랑 찰칵

솔직히 교육 처음 시작하는 날에는 수료까지 할 수 있을까? 싶었는데 성공했다

일주일에 두 번 밖에 안 듣지만... 그래도 아침 5시부터 일어나서 기차 타고 올라오고 도착하면 10신데 아무것도 못하고 쓰러져서 잤다.......

인증서도 조금 욕심 났는데 끝냈다는 것에 의의를 두고 싶다

좋은 강사님들과 운영팀 선생님들 덕분에 과정 내내 너무 행복하고 뜻 깊었다 전보다 더 많이 배운 것 같고... 들은 내용들도 전부 보통 민간에서 듣는 것과는 질이 너무 달라서 행복했다 질문도 엄청하고 그랬음... 취업 자리도 계속 지원해주고... 고민하는 사람이 있다면 강추해주고 싶다   

'외부활동' 카테고리의 다른 글

프로젝트 3주차  (0) 2022.11.16
악성코드 분석 수업  (0) 2022.11.15
프로젝트 1주차  (0) 2022.10.31
케이쉴드 주니어 9기 합격  (0) 2022.09.26
경찰청 방문  (0) 2019.12.24
COMMENT
 
11
16

C. Michael Geiger

침해사고란?

정보통신망 이용촉진 및 정보보호 등에 관한 법률’에 따르면 '해킹,컴퓨터바이러스,논리폭탄,메일폭탄,서비스 거부 또는 고출력 전자기파 등의 방법으로 정보통신망 또는 이와 관련된 정보시스템을 공격하는 행위를 하여 발생한 사태를 말한다.”라고 정의된다.

 

침해사고 유형 

1. 바이러스, 트로이잔, 웜, 악성코드 등의 공격

2. 네트워크 및 시스템의 정상적인 서비스를 마비 또는 파괴 시키는 서비스 장애

3. 네트워크 서비스의 취약점을 이용하여 서비스를 무단 이용하는 비인가된 서비스 이용

4. 네트워크 정보 수집을 포함한 비인가된 네트워크 정보 접근

5. 비인가된 시스템 접근 및 파일 접근

 

침해사고 관련 법률

정보통신서비스 제공자 및 집적정보통신 사업자는 해킹, 악성코드, DDoS 등의 사이버 공격으로 인한 침해사고가 발생하거나 인지한 경우, 정보통신망 이용촉진 및 정보보호 등에 관한 법률(이하 정보통신망법)에 의거하여 그 사실을 즉시 과학기술정보통신부나 한국인터넷진흥원에 신고하여야 한다.

정보통신망 이용촉진 및 정보보호 등에 관한 법률 제 48조의 3(침해사고의 신고 등)에 의거하여 정보통신서비스 저공자, 집적 정보통신시설 사업자는 침해사고가 발생하면 즉시 그 사실을 과학기술통신부장관이나 한국인터넷진흥원에 신고하여야 한다.

침해사고가 발생한 사실을 알고도 과학기술통신부나 한국인터넷진흥원에 신고하지 않을 경우. 정보통신망법 위반으로 1천만원 이하의 과태료가 부과되므로 반드시 신고하여야 한다.

정보통신망 이용촉진 및 정보보호 등에 관한 법률 제76조(과태료) 제3항에 의거하여 1천만원 이하의 과태료를 부과

 

침해사고 신고 의무 대상

침해사고 신고 의무 대상은 영리를 목적으로 인터넷 서비스를 운영하는 모든 사업자(기업)가 해당된다. 영리를 목적으로 한다는 것은 재산상 이익을 취득하거나 이윤을 추구하려는 목적이 있음을 의미하며, 인터넷 상에서 상업적인 목적으로 웹사이트를 개설 · 운영하거나 인터넷 기반 서비스를 제공하는 경우 모두 해당한다. 예를 들어, 웹호스팅업체, 인터넷쇼핑몰업체, 경매 · 커뮤니티 · 미니홈피 · 블로그 서비스 제공자, P2P 등 인터넷 기반 서비스 제공 사업자 대부분이 해당된다고 할 수 있다.

‘정보통신망’ 에서 정보통신서비스 제공자란 전기통신사업법 규정에 의한 1. 전기통신사업자와 2. 영리를 목적으로 전기통신 사업자의 전기통신역무를 이용하여 정보를 제공하거나 정보의 제공을 매개하는 자를 말한다. 전기통신사업자는 「전기통신사업법」의 규정에 따른 허가 · 등록 · 신고 절처를 거친 기간통신사업자, 별정통신사업자, 부가통신사업자를 의미한다.

기간통신사업자는 초고속인터넷기업. 이동통신사 등 유 · 무선 통신사업자를 의미한다.
별정통신사업자는 앞서 말한 기간통신사업자의 전기통신회선설비 등을 이용하여 기간통신역무를 제공하거나, 법령에서 정하는 바에 따라 구내에서 전기통신역무를 제공하는 사업자로서, 국제전화서비스, 재판매 사업자 등이 해당된다.
부가통신사업자는 기간통신사업자의 전기통신회선설비를 이용하여 기간통신역무 이외의 전기통신역무를 제공하는 사업자로서, 포털사이트 · 게임사이트 · 온라인쇼핑몰 · 커뮤니티 · 미니홈피 · 블로그 등 일반적인 인터넷 웹사이트를 운영하는 사업자가 해당된다.

특수한 유형의 부가통신사업자는 다른 사람 상호간에 컴퓨터를 이용하여 정보나 파일 등을 저장. 전송을 주된 목적으로 하는 사업자로서, 웹하드나 P2P사이트 등을 운영하는 사업자가 해당된다.

집적정보통신시설 사업자는 법 제2조 제2호에 따른 정보통신서비스를 제공하는 고객의 위탁을 받아 컴퓨터장치 등 전자정부법 제2조 제13호에 따른 정보시스템을 구성하는 장비(이하 ‘‘정보시스템 장비’’라 한다)를일정한 공간(이하 전산실이라 한다)에 집중하여 관리하는 시설 사업자를 말한다.

집적정보통신시설 사업자는 자사 고객사의 침해사고 발생 사실을 알게 된 경우. 그 사실을 즉시 과학기술정보통신부나 한국인터넷진흥원에 신고하여야 한다.

정보통신서비스 제공자의 구체적인 범위는 한국인터넷진흥원에서 발간한 ‘정보통신서비스 제공자를 위한 개인정보보호 법령 해설서 ’를 참고하면 된다.

정보통신서비스 제공자를 위한 개인정보보호 법령 해설서는 KISA. 개인정보보호 포털 홈페이지(www.i-privacy.kr) 자료실에서 확인이가능하다.

 

신고 절차

신고는 침해사고를 인지한 즉시 이루어져야 하며, 한국인터넷진흥원의 보호나라&KrCERT 홈페이지 또는 118 상담센터에 신고하도록 한다.

 

침해사고 조치 가이드

KISA 민간부문 침해사고 대응 안내서

예방방안

정품 소프트웨어 사용
- 신뢰할 수 없는 경로에서 획득한 운영체제, 유틸리티, 정품 소프트웨어 인증 우회 프로그램 등을 설치 하지 않는다.

운영체제 및 기타 소프트웨어에 대한 최신 패치 적용
- 운영체제 및 기타 소프트웨어에 대한 자동 보안패치 기능을 사용한다.

백신 소프트웨어 설치
- 한 개 이상의 백신 소프트웨어를 설치하여 실시간 감시 수행 및 정기적인 전체 검사를 수행한다.

신뢰할 수 있는 페이지 방문
- 공격자는 취약점을 공격하는 코드를 사용하여 웹 페이지를 단순 방문 하는 것만으로도 악성코드를 감염 시킬 수 있으므로 신뢰 할 수 없는 웹페이지 접속 자제, 파일 다운로드 및 실행을 하지 않는다.
- 신뢰할 수 없는 발송자가 전송한 이메일은 열람하지 않는다.

중요 데이터 백업 수행
- 랜섬웨어 등과 같은 자료 파괴형 악성코드 피해를 대비하기 위해, 중요 데이터의 경우 주기적으로 PC와 분리된 별도의 저장매체 또는 클르우드 서비스를 통해 데이터 백업을 수행한다.

OS에 대한 최신 패치 적용
- OS 제조사 홈페이지나 보안 취약점 정보 사이트를 주기적으로 방문하여 현재 사용하고 있는 OS에 대한 최신 취약점 정보 획득 및 패치
- 정기적으로 취약점 점검 도구와 보안 체크리스트를 사용하여 OS의 보안 취약 점검

웹 서버 전용 호스트로 구성
-웹 서비스 운영에 필요한 최소한의 프로그램들만 남겨두고 불필요한 서비스들은 반드시 제거
- 시스템 사용을 목적으로 하는 일반 사용자 계정은 모두 삭제하거나 최소한의 권한만 할당
- 오직 관리자만이 로그인 가능하도록 설정

서버에 대한 접근제어
- 관리목적의 웹 서버 접근은 콘솔 접근만을 허용
- 위 사항이 불가능할 경우 관리자가 사용하는 PC의 IP만 접근이 가능하도록 접근제어 수행

DMZ 영역에 위치
- 웹 서버를 방화벽에 의해서 보호 받도록 하고 웹 서버가 침해 당하더라도 웹 서버를 경유해서 내부 네트워크로의 침입은 불가능 하도록 구성

강력한 관리자 계정 패스워드 사용
- 관리자 계정 패스워드는 유추가 불가능하고 패스워드 크랙으로도 쉽게 알아낼 수 없는 강력한 패스워드 사용 
- 패스워드 길이는 최소 8자 이상 (대문자, 소문자, 숫자, 기호 등 2종류 이상으로 구성 시 10자리 이상, 3종류 이상으로 구성 시 8자리 이상)
- 사전에 없는 단어를 사용하고 기호를 최소 한 개 이상 포함

파일 접근권한 설정
- 관리자 계정이 아닌 일반 사용자 계정으로 관리자 계정이 사용하는 파일들을 변경할 수 없도록 구성

웹 프로세스의 권한 제한
- 시스템 전체적인 관점에서 웹 프로세스가 웹 서비스 운영에 필요한 최소한의 권한 만을 갖도록 제한
- 웹 서버 관리시에는 일반적으로 사용되는 nobody 권한으로 웹 프로세스가 동작하도록 구성

로그 파일의 보호
- 침입 혹은 침입 시도 등 보안 문제점 파악을 위해 로그 파일이 노출, 변조 혹은 삭제 되지 않도록 불필요한 접근으로부터 보호
- 불필요한 접근으로부터 보호하기 위해 로그파일을 별도의 서버에 백업하여 관리하는 것이 필요
- 로그 파일은 최소 6개월 이상의 로그를 확보하는 것이 필요

웹 서비스 영역의 분리
- 웹 서비스 영역과 시스템 영역을 분리 시켜서 웹 서비시의 침해가 시스템 영역으로 확장될 가능성을 최소화
- 웹 서버의 루트 디렉토리와 OS의 루트 디렉토리를 다르게 지정

설정파일 백업
- 초기 설정 파일을 백업 받아서 보관해두고 변경이 있을 때마다 설정 파일을 백업하여 해킹 사고 발생 시 빠르게 복구 

Inbound 트래픽 제한
-공개용 침입차단시스템을 이용하여 트래픽을 제한
- 전체 서비스 포트에 대해 차단 설정 후 고객이 필요로 하는 서비스에 대해 선별적으로 접속 제한을 해제
- 필요할 경우 아래와 같이 iptables를 사용하여 특정 포트에 대한 inbound 트래픽 제한 

네트워크 장비의 원격 접근 제한 설정
- 허용된 ip 외에는 telnet이나 ssh를 통해 네트워크 장비에 원격 접속할 수 없도록 제한

SNMP 접근 제한 설정
- 패스워드 역할을 하는 community 문자열의 default대 값을 추측하기 어렵고 의미 없는 문자열로 변경
- 네트워크 장비에서 ACL(access-list) 기능을 이용하여 SNMP에 대한 접근 제한

불필요한서비스중단
- 네트워크 장비를 처음 설치하거나 네트워크 장비의 OS등을 업그레이드 한 후에는 사용하지 않거나 보안상 불필요한 서비스를 반드시 중지

설정을 통한 로그인 시간 제한
- 로그인 한 후 일정 시간 동안 아무런 명령어를 입력하지 않으면 자동으로 접속을 종료하도록 설정

로그관리
- 시스템 자체적으로 access-list와 같은 특정한 룰에 매칭되는 로그를 남기도록 설정

보안패치적용
- 네트워크 보안 취약점 정보 사이트를 주기적으로 방문하여 최신 패치 적용

출처: KISA 민간부문 침해사고 대응 안내서

'외부활동' 카테고리의 다른 글

대망의 K쉴드 수료식  (3) 2022.12.30
악성코드 분석 수업  (0) 2022.11.15
프로젝트 1주차  (0) 2022.10.31
케이쉴드 주니어 9기 합격  (0) 2022.09.26
경찰청 방문  (0) 2019.12.24
COMMENT
 
11
15

강사님이 라이브 케이스 2개를 주셔서 1번부터 분석할 예정이다.

전부 txt 파일 형식이며 1케이스 중에 process_information부터 살펴보기로 했다.

uTorrent.exe 

- PID: 420 

server.exe  

- PID: 2688 

토렌트가 실행되고 있다 server는 부모 프로세스 없이 혼자 활동하길래 일단 킵해놓았다

다음은 handle.txt를 분석할 순서다. 프로그램이 어떤 핸들을 잡고 있는지 로그가 남는 파일이라고 한다.

svchost와 유사해보이지만 svchsot 라는 이름을 가진 exe가 존재한다

뭔데 이거...

C:\Windows\281F20BE\svchsot.exe

일단 또 킵해놓는다

토렌트를 살펴보면 딱히 특별한 건 없다 

프로세스 txt 파일에 들어가서 server 친구가 뭘했는지 살펴본다 

크기가 0 이고 high로 실행중이다 수상하다 누군가 내용을 지웠거나 한 것 같다

 

svchost 파일의 상태를 살펴본다 이 부분에서는 특별한 게 없어보인다 

스케쥴을 확인해보니 매 정각마다 실행 되도록 설정되어있다 

강사님이 말씀하시기를 사용자가 PC를 언제 킬지 모르니 매 정각마다 실행 되게 설정해둔거라고 하셨다 

다음은 winprefetchView 라는 툴을 사용해서 자주 보이는 흔적들을 살펴보기로 한다 

이렇게 보면 토렌트가 실행된지 2초 후에 실행됐다 그럼 유입 경로는 토렌트 파일임이 확률이 커졌다

https://jmoon.co.kr/20

 

SFX Archive를 이용한 악성코드 제작

SFX Archive란?SFX Archive는 Self-extracting file Archive의 약자로 자체 압축 풀림 또는 자동 압축 풀림을 의미한다. 대부분의 압축 파일은 알집 같은 별도의 소프트웨어를 이용해서 압축을 풀 수 있지만 위

jmoon.co.kr

이러한 악성코드를 SFX 아카이브를 통한 악성코드라고 한다 

이후에는 상세분석으로 진행된다 

'외부활동' 카테고리의 다른 글

대망의 K쉴드 수료식  (3) 2022.12.30
프로젝트 3주차  (0) 2022.11.16
프로젝트 1주차  (0) 2022.10.31
케이쉴드 주니어 9기 합격  (0) 2022.09.26
경찰청 방문  (0) 2019.12.24
COMMENT
 
10
31

드디어 시작된 프로젝트! 관련 업에 종사했던 경험 때문에 아래와 같은 주제를 맡았다...

깔끔한 주제 분배부터 공지까지... 시작부터 수월하다! 조장님 덕분이다

 

FW(Firewall) 개념

접근제어리스트를 기반으로 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템. 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성한다. 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정이 가능하다.

 

출처: 주니퍼 네트웍스 블로그(https://www.juniper.net/kr/ko/research-topics/what-is-ids-ips.html)

IDS(Instrusion Detection System) 개념

실시간으로 네트워크 상에서 발생하는 트래픽, 이벤트들을 모니터링해 이상징후를 탐지하고 경고하는 시스템. 

- 내·외부망의 접속점에 위치하여 방화벽의 부족한 부분을 보완하기 위해 사용되는 시스템
- 네트워크 상에서 발생하는 의심스러운 행동을 발견하고 경고음 전달
- 이상징후 및 침해사고 분석을 위해 로그 조회 기능 지원
- 차단과 같은 컨트롤은 불가

 

구성방식

IDS를 통한 트래픽 모니터링 방식은 두가지가 존재한다. 미러링 방식과 인라인 방식이다.

 

- 미러링 방식(Mirroring Mode)

TAP장비와 같은 네트워크 장비의 미러링 포트 기능을 사용하여 네트워크 패킷을 복제하여 원래 목적지와 제어장비로 패킷을 복제시킨 후 모니터링 하는 방식. 

출처: https://m.blog.naver.com/ster098/221995060127

스위치 미러링 모드(Mirroring Mode)의 경우에는 네트워크 패킷의 부하가 클 경우 패킷의 유실 가능성이 있다.

탭 장비를 사용한 미러링 모드를 구성할 경우 물리적인 탭 장비에서 네트워크 패킷을 복제하기 때문에 패킷의 유실 가능성이 적다. 탭 장비의 장애가 발생할 경우 자체 바이패스를 지원하기에 하단 서비스의 영향도를 줄일 수 있다.

 

- 인라인 방식(In-line Mode)

인라인 모드(In-line Mode)는 모든 패킷이 보안장비를 거쳐 목적지로 도달하는 방식이다.

출처: https://m.blog.naver.com/ster098/221995060127

보안정책에 따라서 패킷을 Pass or Drop이 가능하다. 따라서 침해 위협이 있는 패킷은 자동 차단이 가능하므로 보안성을 높이는 방법 중 하나이다.

다만, 모든 패킷을 받아야 하기 때문에 부하로 인한 장비 장애가 발생할 수 있다. 장애 발생 당시 하단 서비스에 영향이 갈 수 있기에 물리적인 Bypass 또는 이중화를 통해 Fail-over가 될 수 있도록 하여야 한다.

* Fail-over: 컴퓨터 서버, 시스템, 네트워크 등에서 이상이 생겼을때 시스템 대체 작동 또는 장애 극복을 위하여 예비 시스템으로 자동전환되는 기능이다.

출처: https://ehdtn1219.tistory.com/86

 

미러링(Mirroring) / 인라인(In-line) 모드

네트워크 패킷을 분석하기 위하여 네트워크 장비를 미러링 모드(Mirroring Mode) 또는 인라인 모드(In-line Mode)로 구성하여 인바운드(내부->외부) / 아웃바운드(외부->내부) 패킷을 분석한다. 미러링

ehdtn1219.tistory.com

 

 

출처: 프리로하님 블로그(https://freloha.tistory.com/38)

IPS(Instrusion Detection System) 개념

실시간으로 네트워크 상에서 발생하는 트래픽, 이벤트들을 모니터링해 이상징후를 탐지, 경고, 차단하는 시스템. 

- 악의적인 트래픽을 검출 및 부정한 액세스 탐지.
- 탐지된 패턴을 분석해 패킷을 차단하거나 세션을 끊어 실시간 방어
- 알려지지 않은 공격도 차단 가능, 오탐이 잦다는 단점 존재

 

[토막상식]

TMS(Threat Management System) 개념

다수의 장비를 관리하며 다양한 위협 정보를 종합적으로 모니터링하고 분석하며 연동된 장비들과 유기적으로 대응하는 차세대 네트워크 통합 위협 관리 플랫폼... 사실 말이 거창하지 IPS다. 관제 대상 기관은 기관 내에 설치된 장비를 통해 관제 기관으로 정보를 보내온다. 그럼 관제는 TMS를 통해 하루종일 이상징후를 모니터링 한다.

 

차이점

간단하다. IDS는 탐지'만'하고 IPS는 차단'도' 가능하다.

 

스노트(Snort) 개념

1998년 SourceFire사의 CTO Martin Roesch에 의해 발표된 오픈 소스 프로그램. 실시간 트래픽 분석과 패킷 로깅을 수행하는 침입탐지시스템(IDS)이다. 프로토콜과 패킷 분석, 패턴 매칭이 가능하며 다양한 공격을 탐지하고 분석하는데 유용하다. 또한 룰을 직접 작성해 적용 및 탐지, 분석이 가능하다. 

 

룰(Rule) 개념

네트워크 상에서 패킷 데이터 분석을 통해 공격의 유무와 위험도를 판단하기 위해 지정한 패턴 및 규칙. 종종 정책이라고도 부른다.

현업 나가면 벤더사 룰, 기관 자체 룰, 국정원 룰 이렇게 세 가지를 기반으로 분석 및 차단을 진행한다. 여기서 우리가 만들어 적용할 정책은 기관 자체 룰이라고 생각하면 된다.

 

스노트 기능

Packet Sniffer: 네트워크 상의 패킷을 sniffing하여 보여주는 기능
Packet Logger: 모니터링한 패킷을 저장하고 로그에 남기는 기능
IDS/IPS: 네트워크 트래픽을 분석해 공격을 탐지/차단하는 기능

 

스노트 시그니처

시그니쳐는 패턴이라는 이름으로 불리기도 한다. 다른 뜻으로는 악성코드 파일을 유니크하게 식별하기 위해 사용되는 방법 혹은 백신 프로그램이 파일들을 스캔할 때 해당 파일을 유일하게 식별할 수 있도록 사용되는 특정 데이터 부분을 말한다.

출처: 하우리 블로그(https://hauri.co.kr/security/issue_view.html?intSeq=93&p)

스노트의 시그니처는 아래와 같이 구성된다.

더보기

[액션] [송신 IP] [송신 port] [방향] [수신 IP] [수신 port] ([룰 옵션])

- 룰 헤더 룰 옵션

- 룰 옵션은 선택사항이지만 일반적으로 룰 옵션이 훨씬 더 많이 사용된다.

Rule Header

더보기

- 액션
alert: 경고를 발생시킨다.
log: 로그를 기록한다.
pass: 패킷을 무시한다.
active: alert를 발생시키고 대응하는 dynamic을 유효화 한다.
dynamic: active에 의해 유효화된 경우 한쪽의 패킷을 기록한다.

 

- 송수신 IP, port
211.11.22.33 80
211.11.22.0/24 443
any 80 또는 211.11.22.33 any 또는 any any 와 같이 사용 가능하다.
'$HOME_NET' 와 같이 snort.conf에서 지정한 변수를 참조할 수도 있다.

- 방향
-> 또는 <>

 

Rule Option

더보기

세미콜론(;)을 이용하여 옵션과 옵션을 구분한다.

msg: 지정한 메시지가 이벤트 명으로 사용된다.
dsize: dzise:<바이트, dsize:바이트<>바이트 와 같이 상한선, 하한선, 범위를 지정할 수 있다.
content: 문자, 바이너리로 패턴을 탐지한다.
content:"문자"
content:| 00 01 0A AA |
content: "| 90 90 90 | /bin/sh"
offset: 검색을 시작할 byte수를 지정한다.
depth: offset부터 시작하여 검색할 byte수를 지정한다.
nocase: 대소문자를 구별하지 않는다.
flags: TCP 제어 플래그를 지정한다. F, S, FA, FSA 등으로 지정 가능하다.
pcre: 정규식을 사용한다.
threshold: 패킷의 발생량을 기반으로 탐지한다.
아직까지 흔히 사용 되고 있지만 공식적으론 사용을 권장하지 않는다.
비슷한 기능을 하진 detection_filter 사용이 권장된다.

 

스노트(Snort) 사용법

설치법은 어렵지 않다. 아직 VM웨어 세팅중이라 Cent OS와 리눅스 환경은 차차 추가할 예정이다.

윈도우에서 스노트 사용하는 법

1. Snort(https://snort.org/) 다운로드 및 설치

2. WinPcap(https://www.winpcap.org/install/default.htm) 다운로드 및 설치  

3. 환경변수 수정해주기 

path 편집

새로 만들기 -> C:\Snort\bin\ 추가

4. 명령어 프롬프트(cmd)를 관리자 권한으로 실행

5. snort -W 입력

6. ^^ 

'외부활동' 카테고리의 다른 글

프로젝트 3주차  (0) 2022.11.16
악성코드 분석 수업  (0) 2022.11.15
케이쉴드 주니어 9기 합격  (0) 2022.09.26
경찰청 방문  (0) 2019.12.24
2019 누리캅스 활동을 마무리 하면서  (0) 2019.12.20
COMMENT
 
10
12

1. 서버 구축시 단일 서버와 데이터베이스 서버 분리 방법의 차이는?

> 단일 서버 구성
웹 클라이언트 => 연결 <=  웹서버 WAS + 데이터베이스 서버

> WAS와 데이터베이스 서버를 분리 구성
웹 클라이언트 => 연결 <= 웹서버 WAS => 연결 <= 데이터베이스 서버

2. WAS와 데이터베이스 서버 분리는 언제 필요한가?
DB서버를 분리하는 가장 큰 이유는 WAS(Web Application Server)에서 처리할 부분이 DB서버에 비해 상대적으로 많은 경우 분리하여 사용하게됨. 즉 데이터베이스와 달리 이미지나 영상 등 정적 리소스를 많이 요구하는 웹사이트를 생각해볼 수 있음. 예를 들어 쇼핑몰 등에서 사진 및 영상이 많을 수 있으므로 상대적으로 데이터베이스의 사양보다는 WAS 쪽 사양을 높이는 방법이 필요하다.

단 동일 서버로 구현된 경우 WAS의 성능만 높이기 어려우므로 데이터베이스 서버를 함께 올릴 수 밖에 없음. 이런 이유로 가격과 성능을 고려할 경우 비효율적인 측면이 증가.

메모리에 대한 의존도만 생각해봐도 WAS보다는 데이터베이스가 월등히 높다. WAS와 달리 Database는 다른 하드웨어보다 메모리에 영향을 많이 받는다. 즉 성능을 높이기 위한 기술적 방법이 각기 다르게 적용되야 하는데 하나의 단일 서버 구현은 한계가 있으므로 분리하는 방법이 필요한 것이다.

결론, 하나의 웹서버가 견딜 수 있는 능력치가 정해져 있으므로 좀 더 효과적으로 운영하기 위해서는 WAS와 데이터베이스를 분리하여 운영하면 구현 수준에 따라 Max에 가까운 성능을 발휘할 수 있는 것이다.

3. 데이터베이스 서버 분리시 장점은?

> 확장성
성능을 높이기 위한 확장성이다. 앞서 말한 것처럼 단일 머신의 스펙을 높이기 위해 병렬 구조의 Scale out 방식의 서버 증설이 필요한 경우 DB 서버 분리는 반드시 필요한 과정 중 하나이다. 이렇게 해야 자원을 WAS 서버와 공유하지 않고 독점적으로 사용하므로 더 높은 성능을 기대할 수 있다.

> 보안성
더 높은 보안을 위해서 나누는 것이 좋다. 만약 WAS 서버에 해킹이 발생한 경우, 해킹에 의해 루트 권한 모두가 넘어갈 수도 있고 이 경우 데이터에 심각한 문제가 발생할 수 있다. 하지만 별도로 데이터베이스 서버로 분리하여 제한적인 권한을 부여한 경우 심각한 문제로부터 상당 부분 보호할 수 있게 된다.

> 기타 백업 등
형상 관리 툴을 사용하는 경우 당연히 소스 등은 히스토리와 백업에 안전할 수 있다. 하지만 데이터베이스의 경우 별도의 백업하고 주기적으로 백업을 수행할 경우 그 크기도 작지 않으므로 분리했을 때 백업 방법의 선택의 폭이 넓다.

최근에는 대용량 트래픽 부하를 막기 위해 로드 밸런싱(Load Balancing)의 방법이 필요하다. 중간에 로드밸런서를 두고 여러개의 웹서버를 분산하여 사용하려면 WAS와 데이터베이스 서버를 각각 다르게 운영해야한다. 그래야 WAS와 Database의 Scale Out을 각각 다르게 설정 사용할 수 있다.

4. WAS와 데이터베이스 서버 분리시 주의할 점

> 동일한 리전을 사용할 것
동일 사양의 머신인 경우 하나의 머신을 사용하는 것이 분리 방법보다 더 빠르다. 크기는 WAS와 데이터베이스의 네트워크 통신 부하에 따라 결정된다. 특히 WAS에서 데이터베이스 서버의 리전을 잘 못 설정할 수도 있다. 이런 경우를 방지하려면 ping을 사용하여 지연시간을 측정하는 것도 방법이다.

출처: https://webisfree.com/2020-05-07/[서버구축]-단일-서버와-데이터베이스-서버의-분리가-왜-필요할까

'보안' 카테고리의 다른 글

보안 취약점 점검 기준  (0) 2023.01.03
WEB과 WAS  (0) 2022.10.12
ARQ란?  (0) 2022.10.12
2021. 01. 18 _ 리버스 엔지니어링이란  (0) 2021.01.18
시스템 해킹 보안 기초  (0) 2020.11.22
COMMENT
 
10
12

1. WEB이란?

웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 서버

2. WAS란?

웹브라우저와 같은 클라이언트로부터 웹 서버가 요청을 받으면 애플리케이션에 대한 로직을 실행하여 웹 서버로 다시 반환해주는 소프트웨어.

3. WAS와 WEB 서버의 차이점?

> 요청을 받아 처리하는 컨텐츠라는 점.
> 웹 서버의 경우 정적인 컨텐츠(HTML, CSS, 이미지)를 요청 받아 처리함. 
> WAS의 경우 동적인 컨텐츠(JSP, ASP, PHP)를 요청 받아 처리함.

4. WAS와 WEB을 나눠야하는 이유

WAS의 경우 웹 + 웹 컨테이너의 개념이라 웹 서버가 없더라도 웹 서버 역할을 동시에 할 수 있음. 하지만 굳이 분리해서 사용하는 이유는

> 부하를 줄이기 위해.
> 사용자들에게 WAS가 DB 서버에 접속하는 정보를 외출로 노출 시킬 경우 보안상 문제가 될 수 있음

'보안' 카테고리의 다른 글

보안 취약점 점검 기준  (0) 2023.01.03
데이터베이스 서버를 따로 두는 이유  (0) 2022.10.12
ARQ란?  (0) 2022.10.12
2021. 01. 18 _ 리버스 엔지니어링이란  (0) 2021.01.18
시스템 해킹 보안 기초  (0) 2020.11.22
COMMENT
 
10
12
ARQ란?
에러가 발생한 경우 재전송을 요구하는 방식

Stop & wait 방식이란?
수신측으로부터 ACK를 받을 때까지 대기하다가 전송하는 방식
- 반이중 방식으로 다른 ARQ 방식보다 전송 효율이 낮다

Go Back N 방식이란?
오류가 난 지점부터 전송한 지점까지 모두 재전송하는 방식
- Timer가 만료 되면 ACK가 오지 않은 프레임부터 재전송한다

Selective ARQ 방식이란?
오류가 난 부분만 재전송하는 방식
- 빠른 재전송이 가능하다

Adaptive ARQ 방식이란?
전송 효율을 최대한 높이기 위해 데이터 프레임의 길이를 동적으로 변경하여 전송하는 방식
- 수신측이 송신측에게 수신한 데이터 프레임을 감지하고 오류 발생률을 판단하여 송신측에 오류 발생률을 통보하면 송신측은 해당 오류 발생률을 기반으로 낮으면 긴 프레임, 높으면 짧은 프레임을 전송
COMMENT
 
1 2 3 4