#1 버퍼오버플로우
- 주요 해킹기법 중 하나인 버퍼 오버플로우의 예방책
1) 스택가드 : 복귀주소와 변수 사이에 특정 값(Canary word)을 저장하여, 그 값이 변경되었을 경우 오버플로우로 가정해 프로그램 실행을 중단한다.
2) 스택쉴드 : 리턴 주소를 Global RET이라는 특수 스택에 저장함. 함수 종료 시 저장된 값과 스택의 RET값을 비교하여 다를 경우 프로그램을 종료한다.
3) ASLR : 주소 공간 배치를 난수화하는 기법이다. 메모리공격 방어 기법으로 주소 공간을 난수화하여 버퍼오버플로우를 통한 특정 주소 호출을 방지한다.
4) 프로그램 개발 시 버퍼 오버플로에 취약하지 않은 함수를 사용. 입력값에 대한 적절한 검증이 필요하다.
#2 레이스컨디션
- 레이스 컨디션은 공유 자원에 대해 여러개의 프로세스가 동시에 접근하기 위해 경쟁하는 상태를 말한다.
프로세스들이 경쟁할 때 관리자 권한을 얻는 공격을 레이스컨디션 공격이라 한다.
1) 어떤 명령인지 간단히 서술.
# touch hack.txt
# ls -al /tmp/hack.txt
- "touch" 명령으로 크기가 0인 hack.txt 파일을 생성하고 "ls" 명령으로 파일 생성을 확인하고 있다.
2) for(i=0; i<10; i++)
{
printf ("run : %d \n", i+1);
system("ln -s /tmp/hack.txt /tmp/race.tmp");
}
- 미리 생성해둔 /tmp/hack.txt 를 원본으로 하는 심볼릭 링크파일인 /tmp/race.tmp 를 만드는 과정을 10번 반복하고 있다.
3) 어떤 공격인지 서술하고 해당 공격에 대응방안
- 레이스컨디션 : 임시 파일을 생성하는 프로그램에서 자주 사용한다. 임시 파일을 만들어 쓰고 일이 끝났으면 지우는 과정에서 쓰기 바로 직전 경쟁조건을 이용해 원하는 파일에 원하는 내용을 집어넣는 방식이다.
- 대응방안 :
1) 가능한 임시파일을 만들지 않는다.
2) 동일한 파일이 이미 존재하는 경우 파일 생성 또는 쓰기 금지.
3) 사용하고자하는 파일에 링크가 걸렸을 시 실행 중단.
4) umask를 최하 022정도로 유지하여 임시로 생성한 파일이 공격자에 의해 악의적으로 삭제되지 않도록 함.
#3 루트킷
- 시스템에 전반적으로 접근할 수 있는 루트 권한을 쉽게 얻도록 해주는 킷
- 시스템에 침투하여 루트 권한을 얻어낸 후 백도어 프로세스나 파일 등을 심어 놓고 시스템 상에서 정상적인 관리자가 이러한 흔적을 볼 수 없도록 숨기는 프로그램을 의미
#4 공급망 공격 (Supply Chain Attack)
- 공급망 공격은 소프트웨어 업체가 제작하는 프로그램(ex.빌드서버)에 대한 해킹을 통해 접근 권한을 먼저 확보하고 프로그램 제작단계에 악성코드를 침투시키는 방법이다.
- 대응방안 :
1) 시스템 망 분리 : 개발 시스템은 망 분리가 이루어져야하며, 불필요한 포트를 모두 차단
2) 시스템 접근통제 : 작업을 수행하는 시스템은 지정된 관리자 외 접근 차단
3) 인터넷 접속 차단 : 관리 시스템은 외부 인터넷 접속을 차단하고, 관리에 필요한 포트만 화이트리스트 기반으로 관리
4) 별도의 인증서 관리 : 코드 서명 작업을 수행하는 시스템 및 인증서 관리 시스템은 일반 업무 PC와 혼용 금지
5) 인증서 사용 로그 기록 및 승인 : 코드 서명을 위해 인증서 사용 시 작업 일지를 기록하고, 관리자의 승인 필요
6) 백식 프로그램 최신 업데이트 : 백신 프로그램은 최신 업데이트를 주기적으로 수행하고 최신버전으로 유지
'⭐ 보안기사' 카테고리의 다른 글
안드로이드 앱 딥링크 취약점 공부하기 (0) | 2020.05.29 |
---|---|
리눅스 로그 공부 (utmp, wtmp, btmp) (2) | 2020.05.28 |
[CentOS] Apache(아파치) httpd.conf(설정파일) / 접근제어 (7) | 2020.05.27 |
리눅스 좀비프로세스 대응 방법 (0) | 2020.05.27 |
리눅스 권한 관리 (chmod, chown, SetGID, SetUID, Sticky Bit, umask) (2) | 2020.05.25 |