1. 힙 스프레이 기법
- 페이로드를 전달하는 방법으로써, 마치 스프레이로 뿌리는 것처럼 힙 메모리 영역에 대량의 메모리를 할당하고 코드를 삽입
- 따라서 힙 메모리에 대하여 예측 가능한 메모리 영역에 쉘 코드를 삽입하는 것이 가능
- 대응방안
. strcpy, strcat, sprintf, memcpy 등의 함수 → strncpy, strncat, snprintf 라이브러리 함수 사용
. 메모리 버퍼의 경계 값을 넘어 메모리를 읽거나 저장하지 않도록 경계 설정 또는 검사를 반드시 수행
. 프로그램 상에서 버퍼를 사용할 경우, 적절한 버퍼의 크기를 설정하고 설정된 범위의 메모리 내에서 올바르게 읽기/쓰게 통제
. Non-executable Stack, 스택가드(StackGuard), ASLR 등과 같은 메모리 보호 기법 적용
2. 다형성
- 악성코드가 실행될 때마다 실행 코드가 바뀌는 방식
- 주로 바이러스류 악성코드에서 발견이 되는데, 파일이 바이러스에 감염될 때마다 그 형태가 변해 감염여부를 진단하기 어렵게 만드는 기법
3. 난독화
- 프로그램의 로직을 분석하기 어렵게 만드는 기법
- 일반적으로 암호화 방식이 많이 사용됨
. 대칭키 암호화 알고리즘을 사용해 악성코드가 감염될 때 마다 고유한 키를 이용하여 코드 섹션을 암호화기 때문에, 코드의 특징적인 부분을 진단하는 시그니처 기반 진단법을 우회 가능
. 또한, 코드 섹션이 암호화되어 있기 때문에, 정적 분석이 불가능
4. 패킹 (Packing)
- 난독화와 유사한 개념으로 우리말로 실행압축이라는 표현을 쓰기도 함
. 실행압축이라는 용어는 압축된 파일을 클릭만 하면 압축이 풀리면서 파일이 자동으로 실행되도록 사용자에게 편의성을 제공하기 위해 고안된 기술
- 프로그램을 손상시키지 않도록 보호하기 위해서 사용하는 기법 중 하나이며, 실행압축된 프로그램을 풀기 어렵게 하여 코드를 분석하기 어렵게 만드는 방어 기법 중 하나
- 패킹된 악성코드의 경우에는 원본 악성코드와는 구조가 다른 구조를 가지게 되기 때문에, 시그니처 진단법으로는 진단의 한계를 가질 수밖에 없음
5. 사이버 위기 경보 발령 단계
- 정상 > 관심 > 주의 > 경계 > 심각
6. nessus
- 미국 Tenable사가 개발하여 무료로 배포하는 취약점 점검 도구
- 패스워드 취약점, TCP/IP 스택 Dos, 취약한 서버 설정 등 알려진 취약점을 점검하여 text, HTML 등 다양한 형태로 보고서 제공
7. 퍼저(Fuzzer) 또는 퍼징 도구
- 애플리케이션의 보안 취약점을 찾아내기 위한 도구
- 목표 애플리케이션에 대한 다양한 비정상적인 데이터를 입력함으로써 소프트웨어 오류를 유발시켜 보안 취약점을 찾아냄
8. 소프트웨어 보안 가이드 내 소스코드 보안 취약점 7가지
1) 입력데이터 검증 및 표현 : 사용자가 입력한 값에 대한 검증 과정 및 데이터 자료형에 대한 오용으로 인한 보안 취약점
2) API 악용 : 표준 API 의 잘못된 사용으로 인한 보안 취약점
3) 보안기능 : 인증, 접근제어, 권한관리, 암호화 등 기본적 보안 기능과 관련된 취약점
4) 시간 및 상태 : 멀티 프로세스/스레드 프로그래밍에서 발생할 수 있는 보안 취약점
5) 에러처리 : 어플리케이션 사용 시 발생할 수 있는 에러처리와 관련된 보안 취약점
6) 코드품질 : 어플리케이션 안전성, 신뢰성을 확보하기 위한 소스코드 품질 관련된 보안 취약점
7) 캡슐화 : 어플리케이션이 다른 값을 참조할 때 발생하는 보안 취약점
9. 아파치 웹서버 설정파일(httpd.conf) 지시자
- ServerRoot : 웹서버가 설치된 최상위 디렉터리 경로 설정
- ServerType (standalone/inetd) : 서버타입 지정
- ServerTokens : http 응답 시 헤더의 server 필드를 통해 제공할 웹서버, OS 등 정보 레벨 지정 (보안을 위해 Prod-'웹서버 종류'만으로 설정할 것)
- Listen : 웹서버 리스닝 포트 지정
- ServerAdmin : 에러페이지에 포함될 관리자 메일 주소
- MaxClients : 동시 연결 가능한 클라이언트의 최대 개수 설정
- Timeout : 연결 후 클라이언트와 서버 간 아무런 메시지가 발생하지 않을 동안 대기 시간, 초 단위
- PidFile : 웹서버가 기동될 때 자신의 PID를 기록할 파일의 경로 설정
- User/Group : 서버 프로세스를 실행할 사용자와 그룹 설정
- KeepAlive (On/Off) : 클라이언트와 서버 간 연결을 일정 조건에 따라 지속시켜 동일한 연결을 통해 동일 클라이언트의 다수 요청을 처리하는 기능의 사용 여부 설정
- MaxKeepAliveRequests : KeepAlive 옵션 사용 시, 클라이언트와 서버 연결이 유지되는 동안 허용할 최대 요청 개수 지정
- KeepAliveTimeout : KeepAlive 옵션 사용 시, 클라이언트와 서버 연결을 지속시키는 동안에
클라이언트의 마지막 요청 이후 다음 요청을 대기하는 시간(초) 지정, 추가 요청 미발생 시 연결 종료
- RequestReadTimeout header=5 body=10 : 읽기 타임아웃 설정, 요청 헤더가 5초 이내 수신되지 않거나 (Header DOS 대응) 바디 정보가 10초 이내 수신되지 않으면 (Slow HTTP Header, Slow HTTP POST DoS 공격 대응)
- DirectoryIndex : 특정 파일을 지정하지 않고 디렉터리만 지정했을 때 호출할 기본 페이지 지정
- ErrorLog : 에러로그 파일을 어느 경로에 설정할지 지정
- HostnameLookups (On/Off) : 액세스 로그 파일에 클라이언트 정보를 기록할 때, IP를 남길 것인지(Off) / 호스트명(도메인명)을 남길 것인지 (On), 호스트명을 남길 경우 DNS 역질의로 성능저하가 발생하는 단점
< Directory 섹션의 지시자 >
<Directory>
- LimitRequestBody : 클라이언트가 POST, PUT 메소드를 이용해 요청 메시지 바디부에 데이터를 담아 전달할 수 있는 최대 크기
- AllowOverride Authconfig 혹은 All : None으로 되어있는 경우, 상위 디렉토리로 접근 가능
- AllowOverride FileInfo 혹은 All : 파일 업로드 디렉터리에 대한 문서 타입 제어
. 파일 업로드 디렉터리에 .htaccess 파일 생성
> FilesMatch 지시자를 이용해 .ph 등 서버 사이드 스크립트 파일에 대해 직접 URL 호출을 금지시킴
> AddType 지시자를 이용해 서버 사이드 스크립트 확장자를 text/html로 MIME Type 재조정 (실행 못하도록)
- Options Indexes : 디렉터리 리스팅 취약점 존재하므로 삭제 필요
- Options FollowSymLinks : 심볼릭링크가 가능하므로 제거 필요
</Directory>
10. PHP 운영체제 명령어 실행 함수
- shell_exec(), exec(), system(), passthru
※ 참고
- 사이버 위협 동향보고서(2021년 상반기)
- KISA 주요 정보통신기반시설 취약점 점검 가이드
'정보보안 > 신용어 정리' 카테고리의 다른 글
용어 빈칸문제 - 정보보안기사 실기 대비 v5 (0) | 2021.10.24 |
---|---|
용어 빈칸문제 - 정보보안기사 실기 대비 v4 (0) | 2021.10.24 |
정보보안기사 실기 대비 신용어 정리 3탄 (빈칸문제) (0) | 2021.10.17 |
용어 빈칸문제 - 정보보안기사 실기 대비 v2 (0) | 2021.10.16 |
용어 빈칸문제 - 정보보안기사 실기 대비 v1 (0) | 2021.10.13 |
댓글