문의를 보내주셔서 감사합니다! 팀원이 곧 연락드리겠습니다.
예약을 보내주셔서 감사합니다! 저희 팀 멤버 중 한 분이 곧 연락드리겠습니다.
코스 개요
1일차
IT 보안 및 안전한 코딩
- 보안의 특성
- IT 보안 관련 용어
- 위험의 정의
- IT 보안의 다양한 측면
- 다른 애플리케이션 영역의 요구사항
- IT 보안과 안전한 코딩 비교
-
취약점에서 봇넷 및 사이버 범죄로
- 보안 결함의 특성
- 난이도의 이유
- 감염된 컴퓨터에서 표적 공격으로
-
보안 결함 분류
- Landwehr의 분류법
- The Seven Pernicious Kingdoms
- OWASP Top Ten 2013
- OWASP Top Ten 비교 2003 - 2013
Microsoft® Secure Development Lifecycle (SDL) 소개
- 학습 목표
-
공격을 받는 애플리케이션...
- 사이버 범죄의 진화
- 공격이 애플리케이션에 집중됨
- 대부분의 취약점은 작은 ISV 앱에서 발생함
-
Microsoft SDL의 유래...
- Microsoft의 보안 타임라인...
- SDL을 따르는 애플리케이션은?
-
Microsoft Secure Development Lifecycle (SDL)
- Microsoft Secure Development Lifecycle (SDL)
- 사전 SDL 요구사항: 보안 교육
- 1단계: 요구사항
- 2단계: 설계
- 3단계: 구현
- 4단계: 검증
- 5단계: 출시 - 대응 계획
- 5단계: 출시 - 최종 보안 검토
- 5단계: 출시 - 아카이브
- 사후 SDL 요구사항: 대응
- LOB 앱을 위한 SDL 프로세스 가이드라인
- 민첩 개발 방법론을 위한 SDL 가이드라인
- 안전한 소프트웨어 개발은 프로세스 개선을 요구함
안전한 설계 원칙
-
공격 표면
- 공격 표면 감소
- 공격 표면 - 예시
- 공격 표면 분석
- 공격 표면 감소 - 예시
-
프라이버시
- 프라이버시
- 애플리케이션 동작 및 우려 사항 이해
-
다층 방어
- SDL 핵심 원칙: 다층 방어
- 다층 방어 - 예시
-
최소 권한 원칙
- 최소 권한 - 예시
-
안전한 기본 설정
- 안전한 기본 설정 - 예시
안전한 구현 원칙
- 학습 목표
- Microsoft Secure Development Lifecycle (SDL)
-
버퍼 오버플로우 기초
- Intel 80x86 프로세서 - 주요 레지스터
- 메모리 주소 배치
- C/C++에서 x86 상의 함수 호출 메커니즘
- 지역 변수와 스택 프레임
-
스택 오버플로우
- 스택의 버퍼 오버플로우
- 연습 - 소개
- 연습 BOFIntro
- 연습 BOFIntro - 스택 배치 결정
- 연습 BOFIntro - 간단한 공격
-
입력 검증
- 입력 검증 개념
-
정수 문제
- 음수의 표현
- 정수 오버플로우
- 산술 오버플로우 - 출력 예측!
- 연습 IntOverflow
- Math.Abs(int.MinValue)의 값은?
-
정수 문제 완화
- 정수 문제 완화
- 산술 오버플로우 방지 - 덧셈
- 산술 오버플로우 방지 - 곱셈
- C#에서 checked 키워드를 사용한 오버플로우 감지
- 연습 - C#에서 checked 키워드 사용
- C#에서 오버플로우로 트리거되는 예외
-
사례 연구 - .NET의 정수 오버플로우
- 실제 세계의 정수 오버플로우 취약점
- 정수 오버플로우 취약점을 이용한 공격
-
경로 탐색 취약점
- 경로 탐색 완화
2일차
안전한 구현 원칙
-
주입 공격
- 일반적인 SQL Injection 공격 방법
- Blind 및 Time-based SQL injection
- SQL Injection 보호 방법
- 명령어 주입
-
취약한 인증 - 비밀번호 관리
- 연습 - 해시된 비밀번호의 약점
- 비밀번호 관리 및 저장
- 비밀번호 저장을 위한 특수 목적 해시 알고리즘
-
크로스 사이트 스크립팅 (XSS)
- 크로스 사이트 스크립팅 (XSS)
- CSS 주입
- 다른 HTML 태그를 통한 주입 활용
- XSS 예방
-
함수 수준 접근 제어 누락
- 파일 업로드 필터링
-
실용적인 암호화
- 대칭 암호화를 통한 기밀성 보장
- 대칭 암호화 알고리즘
- 블록 암호 - 작동 모드
- 해시 또는 메시지 다이제스트
- 해시 알고리즘
- 메시지 인증 코드 (MAC)
- 대칭 키를 사용한 무결성 및 진위성 보장
- 공개 키 암호화를 통한 기밀성 보장
- 경험칙 - 개인 키 소유
- 비밀번호 관리에서의 일반적인 실수
- 연습 - 하드 코딩된 비밀번호
- 결론
안전한 검증 원칙
- 기능 테스트와 보안 테스트 비교
- 보안 취약점
- 우선 순위 설정
- SDLC에서의 보안 테스트
- 테스트 계획 단계 (리스크 분석)
-
범위 설정 및 정보 수집
- 이해 관계자들
- 자산
- 공격 표면
- 테스트를 위한 보안 목표
-
위협 모델링
- 위협 모델링
- 공격자 프로필
- 공격 트리를 기반한 위협 모델링
- 오용/남용 사례를 기반한 위협 모델링
- 오용/남용 사례 - 간단한 웹 쇼핑몰 예시
- MS SDL의 STRIDE 요소별 접근 방식
- 보안 목표 식별
- 다이어그램 - DFD 요소 예시
- 데이터 흐름도 - 예시
- 위협 열거 - MS SDL의 STRIDE 및 DFD 요소
- 리스크 분석 - 위협 분류
- DREAD 위협/리스크 순위 모델
-
보안 테스트 기술 및 도구
- 일반적인 테스트 접근 방식
- SDLC의 다양한 단계에 대한 기법
-
코드 검토
- 소프트웨어 보안을 위한 코드 검토
- 오염 분석
- 휴리스틱
-
정적 코드 분석
- 정적 코드 분석
- 연습 - 정적 코드 분석 도구 사용
-
구현 테스트
- 수동 런타임 검증
- 수동 보안 테스트와 자동화된 보안 테스트 비교
- 침투 테스트
- 스트레스 테스트
-
퍼징
- 자동화된 보안 테스트 - 퍼징
- 퍼징의 난점
-
웹 취약점 스캐너
- 연습 - 취약점 스캐너 사용
-
환경 점검 및 강화
- 일반적인 취약성 점수 시스템 - CVSS
- 취약점 스캐너
- 공개 데이터베이스
-
사례 연구 - 폼 인증 우회
- NULL 바이트 종료 취약점
- 코드의 폼 인증 우회 취약점
- 폼 인증 우회를 이용한 공격
지식 출처
- 안전한 코딩 출처 - 시작 키트
- 취약점 데이터베이스
- .NET 보안 코딩 가이드라인 (MSDN)
- .NET 보안 코딩 체크리스트
- 권장 도서 - .NET 및 ASP.NET
14 시간
회원 평가 (5)
각 모듈에 대한 다양한 예와 트레이너의 풍부한 지식.
Sebastian - BRD
코스 - Secure Developer Java (Inc OWASP)
기계 번역됨
모듈3 애플리케이션 공격 및 악용, XSS, SQL 주입 모듈4 서버 공격 및 악용, DOS, BOF
Tshifhiwa - Vodacom
코스 - How to Write Secure Code
기계 번역됨
일반 코스 정보
Paulo Gouveia - EID
코스 - C/C++ Secure Coding
기계 번역됨
The trainer's subject knowledge was excellent, and the way the sessions were set out so that the audience could follow along with the demonstrations really helped to cement that knowledge, compared to just sitting and listening.
Jack Allan - RSM UK Management Ltd.
코스 - Secure Developer .NET (Inc OWASP)
Nothing it was perfect.