728x90
  • 컴퓨터 시스템에 악영향을 끼칠 수 있는 소프트웨어
  • 악성 소프트웨어(malicious software) 를 의미한다.
  • 멀웨어를 진단하고 제거하는 프로그램은 안티바이러스 (antivirus)라고 부른다.

 

 

멀웨어 분류

[복제 여부에 따른 분류]

- 복제하는 멀웨어

     - 바이러스 (virus) : 복제를 위해서 숙주 프로그램을 필요로 한다.

     - 웜 (worm) : 숙주 프로그램 없이 자가 복제로만 전파한다.

     - 웜 바이러스 (worm virus) : 웜의 자가 복제 특성과 바이러스의 감염 특성도 가진 멀웨어

- 복제하지 않는 멀웨어

     - 트로이 목마 (trojan horse)

 

[공격 행위에 따른 분류]

     - 스파이웨어 (spyware) : 컴퓨터에서중요한정보를외부로유출시키는멀웨어

     - 애드웨어 (adware) : 컴퓨터사용자에게광고를보여주는멀웨어

     - 봇넷 (botnet) : DDoS 공격에 동원되는 좀비 PC에 설치하는 멀웨어

     - 키로거 (keylogger) : 사용자의키보드입력을외부로유출시키는멀웨어

     - 랜섬웨어 (ransomware): 사용자의데이터를암호화하고복구를대가로금전을요구하는 멀웨어

     - 백도어 (Backdoor) : 통상 접근제어의 인증, 인가 과정을 거치지 않고 공격자가 원격으로 공격대상에 접근할수 있는 통로를 제공

 

멀웨어 분석

멀웨어 분석 방법은 크게 두 가지로 나뉜다.

  • 정적 분석 (static analysis)
    • 멀웨어를 실행하지 않고 분석하는 방법이다.
    • 보안 전문가각 멀웨어를 실행하지 않고 우선 파일에서 정보를 최대한 얻어낸다.
  • 동적 분석 (dynamic analysis)
    • 멀웨어를 실행해서 분석하는 방법이다.
    • 보안 전문가가 멀웨어를 실행해서 그 행위를 조사한다.

 

멀웨어 탐지

안티바이러스의 멀웨어 진단 방식은 두 가지로 나뉜다.

    • 시그니처 기반 탐지 (signature-based detection)
      • 보안 전문가가 찾아낸 멀웨어의 특징(시그니처)을 파일에서 찾아보는 방법이다.
      • 예) 
        • 파일의 해시값: MD5, SHA1 등
        • 바이너리 코드 패턴
        • 문자열 데이터
      • 앞의 방법들은 변종이나 신종은 잘 탐지하지 못한다는  단점이 있다. 이를 극복하기 위해 여러 기법들이 개발되어 왔다.
      • 제네릭 탐지 (Generic Detection)
        • 멀웨어 변종들의 공통된 명령어 opcode 패턴을 찾아 알려지지 않은 변종을 진단하는 기법이다.
      • 휴리스틱 탐지 (Heuristic Detection) 
        • 멀웨어들이 자주 사용하는 명령어와 윈도우 API 호출 패턴을 찾아 의심 파일로 진단하는 기법이다.
  •  
    •  

 

  • 행위 기반 탐지 (behavior-based detection)
    • 무결성 (Integrity) 검사
      • 정상 상태 시스템의 모든 파일의 해시 값을 보관해 이를 바탕으로 변화된 실행 파일들을 의심 대상으로 삼는 기법이다.
    • 행위 차단 (Behavior blocking) 
      • 시스템에서 발생하는 모든 행위를 모니터링하면서, 멀웨어와 유사한 행위가 발생하면 해당 행위를 한 프로세스를 종료시키고 파일을 삭제한다.
    • 실행 중인 멀웨어의 행위를 감시해서 멀웨어가 한다고 알려진 행위를 찾아내는 방법이다.
    • 신종 멀웨어와 변종 멀웨어도 잡아낼 수 있다.
    • 멀웨어의 행위를 기반으로 검출 할 때 멀웨어가 실행되면서 내부 시스템에 영향을 주는 문제가 있다.
    • 멀웨어를 실행시킬 때, 다음과 같은 방법으로 내부 시스템에는 영향을 주지 않으면서 행위 기반 탐지를 하기도 한다.
    • 에뮬레이터 (emulator)
      • 소프트웨어적인 방식으로 가상의 컴퓨터 환경을 구현하는 프로그램
    • 샌드박스 (sandbox)
      • 실제 시스템에서 실행하지만, API 호출을 가로채어 보호된 영역에서 실행시켜서 실제 시스템에는 영향을 주지 않도록 하는 방법
      • 샌드박스
    • 클라우드 서버
  • 각각 정적 분석, 동적 분석과 유사하다.

멀웨어 치료

  • 웜, 트로이 목마: 해당 멀웨어 파일을 제거한다.
  • 바이러스: 감염 방식을 역으로 돌려(역공학) 정상 파일을 복구

'서버 > 암호' 카테고리의 다른 글

이진 분류기(binary classifier)의 결과 분류  (0) 2021.07.29
익스플로잇 (exploit)  (0) 2021.07.27
TLS 내부  (0) 2021.03.25
TLS record 생성  (0) 2021.03.24
TLS Layer  (0) 2021.03.23
728x90

하나가 바뀌면 화면 전체가 리 렌더링되는 현상을 방지할 수 있다.

 

shouldComponentUpdate(nextProps, nextState, nextContext) {

    if (this.state.counter !== nextState.counter) {  

        return true;                                

    }

    return false;

}

 

this.state.counter 현재의 카운터고 nextState.counter 미래에 바뀌는 카운터이다.

그래서 만약 state 바뀌면 렌더링을 해라는 뜻이다. 이렇게 해줘야 쓸대없는 렌더링이 없어진다.

 


더 혁신적인 방법 - PureComponent

 

import React, {PureComponent} from "react";

class Test extends PureComponent {
	...
 }

PureComponent가 shouldComponentUpdate를 알아서 구현된 것이다.

'프레임워크 > React' 카테고리의 다른 글

[React] useReducer  (0) 2021.07.29
[React] contextAPI  (0) 2021.07.29
[React] 배열  (0) 2021.07.22
[React] 화살표 함수를 안쓸 때  (0) 2021.07.22
[React] map 다른 파일로 빼기  (0) 2021.07.22
728x90

밑에 처럼 기존 배열에 push를 하면 배열이 하나만 있는 것이다. 이러면 리액트가 뭐가 바뀌었는지 감지를 못한다. 

const array = [];

array.push(1);

그래서 

const array2 = […array, 2]

기존 배열을 복사 해놓고 새로운 값을 넣어주는 형태이다.

리액트가 이것을 감지할 있는 이유가 기존 배열이랑 새로운 배열이랑 다르기 때문이다.

array === array2

=> false

리액트가 렌더링하는 기준이 예전 state 현재 state 다르면 렌더링을 하는 것이다. 참조가 바뀌어야한다.

const array = [];

array.push(1);

arr === arr
=> true

이러면 리액트가 바뀐 것이 없다고 판단하여 렌더링을 하지 않는다. 그래서 리액트를 push 하면 안된다.

'프레임워크 > React' 카테고리의 다른 글

[React] contextAPI  (0) 2021.07.29
[React] PureComponent와 shouldComponentUpdate  (0) 2021.07.23
[React] 화살표 함수를 안쓸 때  (0) 2021.07.22
[React] map 다른 파일로 빼기  (0) 2021.07.22
[React] Map 사용법  (0) 2021.07.22

+ Recent posts