연락처 정보

코스 개요

1일차

IT 보안과 안전 코딩

  • 보안의 본질
  • IT 보안 관련 용어
  • 리스크의 정의
  • IT 보안의 다양한 측면
  • 다양한 애플리케이션 영역의 요구 사항
  • IT 보안과 안전 코딩
  • 취약점부터 봇넷 및 사이버 범죄까지
    • 보안 결함의 본질
    • 난점의 원인
    • 감염된 컴퓨터부터 표적 공격까지
  • 보안 결함의 분류
    • Landwehr 분류 체계
    • 7대 악의 왕국(The Seven Pernicious Kingdoms)
    • OWASP Top Ten 2013
    • OWASP Top Ten 비교 2003 – 2013

Microsoft® Security Development Lifecycle(SDL) 소개

  • 아젠다
  • 공격받는 애플리케이션...
    • 사이버 범죄의 진화
    • 공격은 애플리케이션에 초점을 맞추고 있습니다
    • 대부분의 취약점은 작은 ISV 앱에 있습니다
  • Microsoft SDL의 기원...
    • Microsoft의 보안 타임라인...
    • 어떤 앱이 SDL을 따르는 것이 필수적인가?
  • Microsoft Security Development Lifecycle(SDL)
    • Microsoft Security Development Lifecycle(SDL)
    • Pre-SDL 요구 사항: 보안 교육
    • Phase One: 요구 사항
    • Phase Two: 설계
    • Phase Three: 구현
    • Phase Four: 검증
    • Phase Five: 릴리스 – 응답 계획
    • Phase Five: 릴리스 – 최종 보안 검토
    • Phase Five: 릴리스 – 아카이브
    • Post-SDL 요구 사항: 응답
    • LOB 앱에 대한 SDL 프로세스 가이드라인
    • 어진일 Agile Methodologies에 대한 SDL 가이드라인
    • 안전한 소프트웨어 개발은 프로세스 개선을 요구합니다

안전한 설계 원리

  • 공격 표면
    • 공격 표면 축소
    • 공격 표면 – 사례
    • 공격 표면 분석
    • 공격 표면 축소 – 사례
  • 프라이버시
    • 프라이버시
    • 애플리케이션 행동 및 우려 사항 이해
  • 심층 방어(Defense in depth)
    • SDL 핵심 원리: 심층 방어
    • 심층 방어 – 사례
  • 최소 권한 원칙
    • 최소 권한 – 사례
  • 안전한 기본 설정(Secure defaults)
    • 안전한 기본 설정 – 사례

안전한 구현 원리

  • 아젠다
  • Microsoft Security Development Lifecycle(SDL)
  • 버퍼 오버플로우 기초
    • Intel 80x86 프로세서 – 주요 레지스터
    • 메모리 주소 레이아웃
    • x86 기반 C/C++의 함수 호출 메커니즘
    • 로컬 변수와 스택 프레임
    • 스택 오버플로우
      • 스택의 버퍼 오버플로우
      • 연습 – 소개
      • 연습 BOFIntro
      • 연습 BOFIntro – 스택 레이아웃 결정
      • 연습 BOFIntro – 간단한 익스플로잇
  • 입력 검증
    • 입력 검증 개념
    • 정수 문제
      • 음수 정수의 표현
      • 정수 오버플로우
      • 산술 오버플로우 – 출력을 추측해 보세요!
      • 연습 IntOverflow
      • Math.Abs(int.MinValue)의 값은 무엇인가요?
    • 정수 문제 완화
      • 정수 문제 완화
      • 산술 오버플로우 방지 – 덧셈
      • 산술 오버플로우 방지 – 곱셈
      • C#에서 checked 키워드로 오버플로우 감지
      • 연습 – C#에서 checked 키워드 사용
      • C#에서 오버플로스로 인한 예외 발생
    • 사례 연구 – .NET의 정수 오버플로우
      • 실世界の 정수 오버플로우 취약점
      • 정수 오버플로우 취약점 익스플로잇
    • 경로 횡단 취약점
      • 경로 횡단 완화

2일차

안전한 구현 원리

  • 인젝션
    • 전형적인 SQL 인젝션 공격 방법
    • 블라인드 및 시간 기반 SQL 인젝션
    • SQL 인젝션 보호 방법
    • 명령어 인젝션
  • 인증 손상 – 비밀번호 관리
    • 연습 – 해시된 비밀번호의 취약점
    • 비밀번호 관리 및 저장
    • 비밀번호 저장을 위한 특수 목적 해시 알고리즘
  • 크로스 사이트 스크립팅(XSS)
    • 크로스 사이트 스크립팅(XSS)
    • CSS 인젝션
    • 익스플로잇: 다른 HTML 태그를 통한 인젝션
    • XSS 방지
  • 함수 수준 액세스 제어 누락
    • 파일 업로드 필터링
  • 실용 암호학
    • 대칭 암호화를 통한 기밀성 제공
    • 대칭 암호화 알고리즘
    • 블록 시저 – 운영 모드
    • 해시 또는 메시지 다이제스트
    • 해시 알고리즘
    • 메시지 인증 코드(MAC)
    • 대칭 키를 통한 무결성 및 진위성 제공
    • 공개 키 암호화를 통한 기밀성 제공
    • 원칙 – 개인 키의 소유
    • 비밀번호 관리의 전형적인 실수
    • 연습 – 하드코딩된 비밀번호
    • 결론

안전한 검증 원리

  • 기능 테스트 vs. 보안 테스트
  • 보안 취약점
  • 우선순위 설정
  • SDLC 내 보안 테스트
  • 테스트 계획 단계(리스크 분석)
  • 범위 설정 및 정보 수집
    • 이해관계자
    • 자산
    • 공격 표면
    • 테스트를 위한 보안 목표
  • 위협 모델링
    • 위협 모델링
    • 공격자 프로필
    • 공격 트리에 기반한 위협 모델링
    • 남용/오용 사례에 기반한 위협 모델링
    • 남용/오용 사례 – 단순한 웹숍 예제
    • 요소별 STRIDE 접근 방식 기반 위협 모델링 – MS SDL
    • 보안 목표 식별
    • 다이어그램 – DFD 요소 예시
    • 데이터 흐름 다이어그램 – 예시
    • 위협 열거 – MS SDL의 STRIDE 및 DFD 요소
    • 리스크 분석 – 위협 분류
    • DREAD 위협/리스크 랭킹 모델
  • 보안 테스트 기법 및 도구
    • 일반 테스트 접근 방식
    • SDLC의 다양한 단계에 대한 기법
  • 코드 리뷰
    • 소프트웨어 보안을 위한 코드 리뷰
    • 테인트 분석(Taint analysis)
    • 휴리스틱
  • 정적 코드 분석
    • 정적 코드 분석
    • 연습 – 정적 코드 분석 도구 사용
  • 구현 테스트
    • 수동 런타임 검증
    • 수동 vs. 자동 보안 테스트
    • 침투 테스트
    • 스트레스 테스트
  • 퍼징(Fuzzing)
    • 자동 보안 테스트 - 퍼징
    • 퍼징의 과제
  • 웹 취약점 스캐너
    • 연습 – 취약점 스캐너 사용
  • 환경 검사 및 강화
    • 공통 취약점 평가 시스템 – CVSS
    • 취약점 스캐너
    • 공개 데이터베이스
  • 사례 연구 – 폼 인증 우회
    • NULL 바이트 종료 취약점
    • 코드 내 폼 인증 우회 취약점
    • 폼 인증 우회 익스플로잇

지식 소스

  • 안전 코딩 소스 – 시작 키트
  • 취약점 데이터베이스
  • MSDN의 .NET 안전 코딩 가이드라인
  • .NET 안전 코딩 치트시트
  • 권장 도서 – .NET 및 ASP.NET
 14 시간

참가자 수


참가자별 가격

회원 평가 (3)

예정된 코스

관련 카테고리