Computer Science/Security

[HUFS/정보보안] #5 코드 보안, 악성 코드

성중 2022. 10. 19. 23:59

코드 보안

1. 버퍼 오버플로우

 

프로그램이 실행될 때의 메모리 구조

버퍼 오버플로우란 할당된 메모리(버퍼)를 초과하도록 데이터를 기록해 프로그램 장애를 일으키는 공격으로, 다른 메모리 영역을 침범해 프로그램의 비정상 종료를 일으킬 수 있다

* 버퍼 오버플로우에 취약한 함수를 쓰지 않고 최신 업데이트된 운영체제를 사용해 대처

 

사용할 공간이 초과될 수 있는 함수

 

2. 포맷 스트링 공격

 

포맷 스트링이란 C 언어의 출력 함수인 printf에서 쓰는 문자열이지만 출력 목적이 아닌 메모리 변경 목적으로 사용도 가능하기 때문에 메모리를 변조시킬 수도 있다

 

포맷 스트링 문자를 이용한 메모리 변조

 

3. 메모리 해킹

 

메모리 해킹이란 프로그램의 동작에 직접 관여하지 않고 프로그램이 실행되는데 필요한 정보를 저장해둔 메모리를 조작하는 공격으로, 흔적이 남지 않아 인지하지 못하는 경우가 많다

* 메모리 주소에 저장되는 값을 암호화해서 대처

 

악성 코드

악성 코드란 의도적으로 사용자에게 피해를 주기 위해 동작하는 프로그램, 매크로, 스크립트 등 모든 형태를 뜻하며 다음과 같은 분류와 증상이 있다

 

동작에 따른 악성 코드의 분류
목적에 따른 악성 코드의 분류 (랜섬웨어, 백도어 등)
악성 코드의 증상

 

1. 바이러스

 

바이러스란 악성 코드의 기본적인 형태로, 컴퓨터 내의 프로그램에 자신을 복사하는 프로그램이며 부트 바이러스는 부팅할 때 감염, 파일 바이러스는 다른 프로그램에 기생해 감염된 실행 파일(.exe)을 실행할 때 전파된다 (1세대)

 

부트 바이러스의 동작
파일 바이러스의 감염 (백신 프로그램을 피하기 위해 프로그램 뒤에 위치)
바이러스의 발전

 

2. 웜

 

사람들이 프로그램을 주고받는 일이 줄어들며 바이러스는 많이 사라졌지만 네트워크의 발달로 자체적으로 실행되는 웜(Worm)이 등장했다. 인터넷을 통해 전파되는 특징이 있으며 이메일의 첨부 파일 또는 운영체제의 보안 취약점으로 침투한다

  • 대형 메일형 웜: 웜을 포함하는 대량 메일을 발송해 읽었을 때 감염시키며, 주소록에 침투해 메일을 확산시킨다 (시스템에 임의의 웜/백도어 프로그램을 생성)
  • 시스템 공격형 웜: 운영체제의 취약점을 이용해 내부 정보를 파괴하거나 백도어를 설치하는 웜으로, 과다한 트래픽을 발생(전파)시키고 시스템 이름과 동일한 백도어를 설치해 외부 시스템과 통신한다
  • 네트워크 공격형 웜: 특정 네트워크/호스트에 대해 DOS 공격을 수행하며 네트워크 성능을 저하 및 마비시킨다

 

 

3. 기타 악성 코드

  • 백도어, 트로이목마: 백도어란 정상적인 인증을 거치지 않고 운영체제나 프로그램에 접근할 수 있는 통로이며 트로이목마는 사용자가 의도하지 않은 코드를 정상적인 프로그램에 삽입한 형태다
  • 스파이웨어: 시스템 정보를 원격지의 서버에 주기적으로 보내는 프로그램으로, 자주 방문하는 사이트, 검색어, ID/PW, 키 입력 로그 등을 대상으로 한다
  • PUP(Pontentially Unwanted Program): 사용자에게 직간접적 동의를 구하지만 용도를 파악하기 어려운 상태에서 설치되는 프로그램으로, 크랙 사이트나 악성 코드에 의해, 또는 특정 프로그램을 설치할 때 함께 설치된다

 

네트워크 상태 / 프로세스 점검

악성 프로그램이 만드는 포트

웜이 전파를 위해 백도어를 설치하는 것은 네트워크를 지원하는 통로인 포트(Port)를 만드는 것으로, 이를 통해 해커가 침입하게 된다. 즉 관리자 입장에서는 의도하지 않은 포트가 열려 있는지 점검할 수 있다

 

네트워크 상태를 점검하는 명령어 netstat -an
윈도우 기본 프로세스

윈도우 운영체제 기본 프로세스를 알아 두면 작업관리자에서 이상 프로세스를 점검해볼 수 있다

* 시작프로그램과 레지스트리도 함께 점검하면 좋다! (msconfig, regedit)

 

이름까지 같은 악성 프로세스 정보를 위해 Process Explorer 이용 (위치, 인증서, 날짜, 크기 등)

백도어 파일을 제거하는 방법은 다음과 같다

  1. 파일의 위치를 확인해 삭제
  2. 실행 중이라 삭제되지 않는다면 작업관리자에서 프로세스 중지 후 삭제
  3. 시스템 권한의 프로세스라 중지되지 않는다면 안전모드로 리부팅해 모든 프로세스가 돌지 않는 상태에서 삭제

* 이후 시작 프로그램 및 레지스트리 항목에서 깔끔하게 제거