악성코드 (Malicious code)
악성 행위를 위해 개발된 소프트웨어이다. 악성 소프트웨어, 멀웨어(Malware)도 같은 의미이다.
랜섬웨어(Ransomeware): 피해자 PC의 파일들을 불법으로 암호화한다.
악성코드 분류
- 바이러스: 프로그램을 통한 감염 및 실행
- 웜: 컴퓨터 취약점을 이용해 네트워크를 통한 감염 및 실행
- 트로이 목마: 사용자의 정보를 유출
- 애드웨어: 자동으로 광고를 표시
악성 코드 종류
바이러스 (Virus)
자신을 다른 프로그램 내부에 복제하는 악성 프로그램
웜 (Worm)
독자적으로 실행되는 프로그램
운영체제 등의 취약점을 악용하여 네트워크를 통해 스스로 악성코드를 전파한다.
트로이 목마 (Trojan horse)
개인 정보 유출을 목적으로 다른 프로그램 내부에 기생하며 동작하는 악성코드이다.
겉으로는 정상적인 프로그램이지만 실제로는 내부에서 악성코드가 실행된다.
백도어 (Back-Door): 원격으로 공격자의 조종을 받아 프로그램이 실행되어 개인정보 등을 빼돌린다.
스파이웨어 (Spyware)
컴퓨터의 OS나 프로그램 정보 등을 수집하고 외부에 전송하는 트로이 목마의 한 종류이다.
애드웨어 (Adware)
다른 프로그램이 실행되는 도중에 자동으로 광고를 표시한다.
봇 (Bot)
트로이 목마와 웜의 조합으로, 분산 서비스 거부 (DDoS)에서 좀비 PC가 이에 이용된다.
봇넷(Botnet): 봇끼리의 네트워크이다.
봇마스터(Bot-Master): 명령과 제어 기능을 수행한다.
하이재커 (Hijacker)
사용자를 의도하지 않은 다른 사이트로 이동시키고 팝업을 띄운다.
논리 폭탄 (Logic bomb)
특정 조건이 만족되면 파괴 행위를 하도록 설정되어 있는 악성코드이다.
바이러스 (Virus)
| 구분 | 공격 대상 |
| 부트 바이러스 | 부트 섹터 |
| 파일 바이러스 | 실행되는 모든 파일 |
| 부트/파일 바이러스 | 부트 섹터 / 실행되는 모든 파일 |
| 매크로 바이러스 | 오피스 문서 (Word, Excel, PPT) |
부트 바이러스
운영체제가 정상적인 부팅을 하지 못하게 하거나 시스템 파일을 감염시켜 시스템을 느리게 만드는 바이러스
부트섹터가 공격 대상이므로 운영체제가 실행되기 전에 먼저 실행된다.
파일 바이러스
바이러스가 메모리에 상주하면서 모든 파일에 자신을 복제하여 감염시킨다.
ex) 예루살렘, 전갈, 까마귀, 일요일, FCL, Win95/CIH, 스턱스넷
백신 프로그램: 바이러스 프로그램에서 보이는 코드 패턴을 검사하여 바이러스인지 여부를 판단
다형성 바이러스: 자신의 코드를 주기적으로 변경하여 코드 패턴 탐지를 어렵게 한다.
부트/파일 바이러스
부트섹터와 실행 파일 2개 모두를 공격하는 바이러스이다.
매크로 바이러스
MS사의 오피스 문서 매크로 영역에 악성코드를 집어넣는 방식이다.
웜 (Worn)
자기 스스로를 다른 시스템으로 전파시키는 악성코드이다. 네트워크를 통해 빠르게 전파된다.
모리스 웜 (Morris Worm): 인터넷을 통해 전파된 최초의 웜이다.
메일 첨부파일 웜
ILOVEU 또는 LoveLetter와 같은 파일이 첨부된 메일을 통해 감염되는 방식이다.
예방방법
- 스팸 메일은 바로 삭제한다.
- 신뢰할 수 없는 발송자의 메일은 열지 않는다.
- 내부 보안 교육을 실시한다.
님다 웜 (Nimda Worm)
전파 방법
- 파일 자체에 자신을 복제
- 이메일의 첨부파일 (README.EXE)로 전파
- 웹서버 IIS의 취약점을 이용
- 네트워크 공유 폴더를 이용
슬래머 웜 (SQL Slammer Worm)
MS의 SQL Server를 대상으로 UDP 기반으로 Dos를 실시하는 웜이다.
무작위로 선택된 IP 주소에 웜을 포함한 패킷을 전송하고 반응이 있는 주소의 SQL Server로 다시 웜을 전파한다.
https://namu.wiki/w/1.25%20%EC%9D%B8%ED%84%B0%EB%84%B7%20%EB%8C%80%EB%9E%80
1.25 인터넷 대란
2003년 1월 25일 에 대한민국의 인터넷망이 분산 서비스 거부 공격 , 소위 말하는 DDoS(디도스)로 마
namu.wiki
블래스터 웜 (Blaster Worm)
운영체제의 보안 취약점을 이용하여 메모리를 과다하게 사용하도록 만들거나 운영체제를 손상시킨다.
트로이 목마 (Trojan)
정상적인 프로그램으로 위장하여 동작하면서 각종 정보를 공격자의 컴퓨터로 빼돌리는 악성코드이다.
외부 통신을 위해 특정 포트가 이용이 되는데 자신이 사용하고 있지 않은 포트가 사용되고 있다면 트로이 목마를 의심해 볼 수 있다.
악성코드 분석 방법
https://www.virustotal.com/gui/home/upload
VirusTotal
www.virustotal.com
코드 정적 분석 (Static Code Analysis)
악성 코드를 실행하지 않은 상태에서 분석하는 방식이다.
디스어셈블 (Disassemble) 또는 리버싱 (Reversing): 실행 프로그램 파일에서 소스를 역추출한다.
코드 동적 분석 (Dynamic Code Anlysis)
악성 코드를 직접 실행하여 분석하는 방식이다.
실제로 악성 프로그램을 실행하기 때문에 외부와 단절된 통제된 환경에서 실행하는 것이 중요하다.
작업 관리자 등을 통한 프로세스 확인, SSDT 후킹 등의 기술을 이용하여 확인한다.
루트킷 (Rootkit)
공격자가 심어놓은 프로그램을 숨기기 위한 목적으로 사용되는 프로그램이다.
프로세스 익스플로러 (Process Explorer)
부모 프로세스와 자식 프로세스의 관계를 분석할 수 있다.
등록된 시작 프로그램 확인
운영체제 재시작 후에도 다시 실행되는 악성코드를 확인한다.
파일 및 레지스트리 변경 확인
파일 삭제, 생성 내역을 확인하거나 레지스트리 설정값이 변경되었는지 확인한다.
악성코드 제거
악성코드 프로세스 종료, 악성코드가 변경하거나 생성한 레지스트리 값과 악성코드 파일을 삭제하거나 원래대로 복구한다.
자기 보호 로직이 존재하는 악성코드가 있을 수도 있으므로 안전모드로 부팅 후 제거하는 과정이 필요할 수 있다.
보통 V3와 같은 백신 프로그램을 이용해서 악성코드 파일을 제거한다.
Malware Zero - 무료 악성코드 제거 도구
악성코드 및 애드웨어 등 각종 유해 프로그램에 의한 고통에서 해방되기 위해 설치 없이 사용 가능한 무료 악성코드 제거 도구
malzero.xyz
사회공학 보안공격
기술적인 방법 대신 사람 대 사람으로 비밀 정보를 획득하는 공격 기법이다.
- 쓰레기통 뒤지기 - 버린 메모지, 영수증, 택배 운송장 등을 통해 정보를 수집하는 방법
- 어깨너머로 훔쳐보기 - 공격 대상자가 입력하는 ID, 비밀번호를 직접 훔쳐보는 방법
- 직접적인 접근 - 공격 대상자에게 직접 접근하여 사칭, 협박 등을 통해 정보를 알아내는 방법
- 도청 - 실제로 도청 장치를 이용해서 정보를 얻는 방법
- 편지를 이용한 사회 공학 - 마케팅, 설문지 등으로 위장된 편지를 이용해 정보를 알아내는 방법
피싱 (Phishing)
개인정보와 낚시의 합성어로, 이메일, 메신저 등을 통해서 중요 정볼르 탈취하는 기법이다.
파밍 (Pharming)
DNS 스푸핑 등을 이용해서 정확한 도메인 이름으로 사이트에 접속한다고 하더라도 가짜 웹 사이트로 이동되어 개인정보를 훔치는 기법이다.
스미싱 (Smishing)
문자 메시지와 피싱의 합성어로, 문자 메시지를 통해서 개인정보를 요구하거나 결제를 요구하는 기법이다.
랜섬웨어 (Ransomware)
중요 데이터들을 암호화하고 공격 대상자를 협박하여 금품을 갈취하는 악성코드이다.
https://www.checkmal.com/?lang=ko
체크멀 - 100% 시그니처리스 안티랜섬웨어 앱체크
안티랜섬웨어 전문 솔루션 앱체크(AppCheck)는 랜섬웨어 공격을 사전 방어하고 차단합니다. 랜섬웨어 공격으로부터 PC를 안전하게 보호하세요.
www.checkmal.com
안티 랜섬웨어 프로그램을 설치하여 대비할 수 있다. 개인적으로 추천하는 조합은 V3 Lite + 앱체크이다.
소프트웨어 개발 보안
소스코드를 작성할 때부터 취약점이 없도록 안전한 소프트웨어 개발을 하는 과정이다.
시큐어 코딩 (Secure Coding)이라고도 한다.
시큐어 코딩 가이드를 통해 안전한 개발을 할 수 있다.
https://boho.or.kr/kr/bbs/list.do?menuNo=205021&bbsId=B0000127
KISA 보호나라&KrCERT/CC
KISA 보호나라&KrCERT/CC
www.boho.or.kr
https://ko.wikipedia.org/wiki/MISRA_C
MISRA C - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. MISRA-C는 MISRA(Motor Industry Software Reliability Association)에서 개발된 C 프로그래밍에 대한 개발 표준이다. "MISRA-C"의 목적은 ISO C 언어로 작성된 임베디드 시스템의 코
ko.wikipedia.org
메모리 버퍼 오버플로 (Memory Buffer Overflow) 공격
프로그램이 실행되는 동안 사용자 메모리 영역이 시스템 메모리 영역을 침범하게 만들거나 개발자가 예상한 범위를 벗어난 값을 입력하여 보안 문제를 일으키는 공격
개발자는 시큐어 코딩을 통해 이런 문제에 미리 대비하는 작업을 할 필요가 있다.
ex) 예외 처리, 안전한 함수 사용, 입력 받은 값 검증
포맷 스트링(Format String) 공격
입력값으로 변수의 메모리 주소 등을 파악할 수 있기 때문에 format 기능을 이용해서 안전하게 사용한다.
ex) printf(argv[1]) 대신 printf("%s", argv[1])
경쟁조건
여러 프로세스 또는 스레드가 동시에 같은 자원에 접근하려고 하는 상태
세마포어를 이용해서 한 번에 하나의 프로세스만 접근할 수 있도록 함
'공부 > 보안' 카테고리의 다른 글
| [보안] 인증 (Authentication) (0) | 2024.06.03 |
|---|---|
| [보안] 해시, 메시지 인증 코드, 전자서명 (0) | 2024.06.02 |
| [보안] 인가 (Authorization) (0) | 2024.05.29 |
| [보안] 암호화 (0) | 2024.05.15 |
| [보안] 스푸핑 (Spoofing), 서비스 거부 (DoS), 분산 서비스 거부 (DDoS) (0) | 2024.04.09 |