반응형

1. 리눅스에서 속성은?

특정파일에 대해 삭제 및 변경, 추가등을 불가능하게 하던지, 추가는 되지만 삭제는 안되게 하는 설정들이 가능하다.


2. 해당 명령어들

chattr 명령어 : 파일과 디렉토리의 속성을 지정하는 명령어

lsattr 명령어 : 파일과 디렉토리의 속성을 볼 수 있는 명령어


3. 퍼미션과 속성

  1. 퍼미션(permission)은 ls 명령어로 확인 할 수 있으며 파일의 읽기(read), 쓰기(write), 실행(execution)에 관해 표시

  2. 속성(attribution)은 lsattr로 확인 할 수 있으며 파일의 변경과 접근, 실행등의 권한을 설정해둔 것


4. chattr 의 사용형식

   chattr [-RVf] [-+=AacDdeijsSu] [ -v version]  files…

⇒ chattr [-RVf] [+-=설정모드] [-v 설정버전] 대상파일들 로 생각할 수 있다.


     1) chattr에서 사용하는 설정모드

  • : 지정한 속성을 부여함. +기호가 사용되면 지정한 속성을 부여한다는 의미

  • : 지정한 속성을 제거함. - 기호가 사용되면 지정한 속성을 제거한다는 의미

      =    : 지정한 속성을 초기화하여 설정한다는 의미

     2) 옵션

      -R   : 디렉토리의 속성을 변경할 때, 하위 디렉토리의 모든 파일에 적용

      -V   : chattr 버전과 함께 chattr로 변경한 결과를 보여줌

      -v    : version , 파일의 버전을 설정


      3) 여러가지 속성

  • a 속성 : 해당 파일을 추가만 할 수 있으며 root만이 속성변경이 가능(파일보안)

  • c 속성 : 이 속성이 설정된 파일은 커널에 의해 디스크상에 자동적으로 압축된 상태로 저장 되어있음. 파일을 읽을 경우에는 압축을 해제한 상태로 되돌려주며 쓰기시에는 디스크에 저장하기 전에 파일을 압축

  • d 속성 : 이 속성이 설정된 파일은 dump로 백업이 되지 않음

  • i 속성 : 이 속성이 설정되어 있다면 해당파일의 변경, 삭제, 이름변경뿐 아니라 파일추가 및 링크파일도 만들 수 없음. 변경주기가 거의 없는 부팅관련 파일들에 설정하면 부팅이 되지 않는 문제로 인한 시스템 장애를 줄일 수 있음.

  • s 속성 : 이 속성이 설정된 파일은 파일삭제가 될 경우에 해당블럭이 모두 0으로 되어 버리고 디스크에 다시 쓰기가 발생

  • S 속성 : 이 속성이 설정된 파일은 그 변화가 디스크 상에 동기화 됨

  • u 속성 : 이 속성이 설정된 파일은 파일이 삭제 되었을 경우 그 내용이 저장이 되며 삭제되기 전의 데이터로 복구가 가능해 짐


5. 속성 확인해보기

-rw-r--r--. 1 root root 0 2015-08-05 10:08 attest

attest 파일의 속성을 확인해보자.

[root@kjjback test]# lsattr attest

-------------e- attest  

여기서 ext의 e를 의미한다.


6. 속성 추가해보기

[ i 속성 추가 ]

[root@kjjback test]# chattr +i attest

[root@kjjback test]# lsattr attest

----i--------e- attest


i 의 속성이 추가 되었으며 삭제를 하려고 하면 다음과 같은 메시지가 출력 됨

[root@kjjback test]# rm -rf attest

rm: cannot remove `attest': 명령을 허용하지 않음(Operation not permitted)


[ i 속성 제거 ]

[root@kjjback test]# chattr -i attest

[root@kjjback test]# lsattr attest

-------------e- attest


i 속성을 제거하고 파일을 삭제 하면 파일이 삭제가 된다.

[root@kjjback test]# rm -rf attest

[root@kjjback test]# ls -al

합계 8

drwxr-xr-x.  2 root root 4096 2015-08-05 13:08 .

dr-xr-x---. 21 root root 4096 2015-08-05 10:08 ..




반응형

'운영체제(OS) > 리눅스(Linux)' 카테고리의 다른 글

리눅스 스케쥴러 cron  (0) 2017.07.16
리눅스 원격파일 전송 명령어 scp  (0) 2017.07.14
리눅스 TCP Wrapper  (0) 2017.07.14
리눅스 레드마인 설치  (0) 2017.07.13
커널버전 별 OS 버전  (0) 2017.07.13
반응형

TCP/IP 프로토콜


<IP 프로토콜>

IP 프로토콜은 처리할 데이터(패킷,Packet)를 어떻게 전송하는가에 대한 문제를 다루고 있는 프로토콜이다.


즉, 전송해야 할 데이터를 패킷(packet)이라는 단위로 나누어서 보낼 목적지주소를 할당한 다음 어디로 보낼 것인가를 결정하고 이를  전송하는 문제까지가 IP프로토콜에서 정의하고 있다.


OSI 7 계층 모델에서 보면 IP 프로토콜은 3 계층인 네트워크계층에 속한다. IP 프로토콜과 같이 3 계층인 네트워크계층에 속하는 프로토콜로는 Ipv6, ICMP, ARP, RARP 등이 있다.


<TCP 프로토콜>

TCP 프로토콜은 IP 프로토콜에서 다루고 있는 패킷(Packet)을 목적지까지 어떻게 안정적으로 보낼 것인가를 정의하고 있는 프로토콜이다.


OSI 7 계층 모델에서 보면 TCP 프로토콜은 4 계층인 전송계층에 속한다.

4계층 전송(Transport) 계층에 속하는 것으로는 TCP와 함께 UDP가 있다.


IP 주소

IP 주소는 8bit 씩 4 자리 즉, 전체 32bit 로 구성되어 있으며 .(dot)로 구분한다. 즉, 점(.)을

구분자로하여 32 개의 2 진수를 8 개 bit 4 개로 표현한다.


IP 주소의 구성

IP 주소 = Network Address 부분 + Host Address 부분으로 나뉘어 지며


데이터전송을 위한 라우팅(Routing)은 IP 어드레스 부분 중 네트워크주소 부분을 근거로 이루어진다.


[IP 주소의 범위]

0.0.0.0 ~ 255.255.255.255 까지

이들 주소는 IPv4 라는 규약에 의해 다음과 같이 5 개의 클래스(class)로 나누어져 있다.


[IP 주소의 클래스 Class]


구분

네트워크 부분

호스트 부분

A Class

8 bit

24 bit

B Class

16 bit

16 bit

C Class

24 bit

8 bit



A Class 범위 : 0.0.0.0 ~ 127.255.255.255

B Class 범위 : 128.0.0.0 ~ 191.255.255.255

C Class 범위 : 192.0.0.0 ~ 223.255.255.255

D Class 범위 : 224.0.0.0 ~ 239.255.255.255

E Class 범위 : 240.0.0.0 ~ 255.255.255.255


A,B,C Class : unicast

D Class : multicast

E Class : 예비주소


Broadcast : 255.255.255.255 주소


1. A 클래스

1) 0.0.0.0 부터 172.255.255.255 사이의 IP 주소들이 A 클래스에 속하는 주소들이다.

2) 첫번째 숫자가 1 ~ 127 사이의 값을 가진다.

3) 32bit 중 맨 첫번째 bit 가 0 이다 . (2진수 표기에서)

4) 첫번째 1byte(8bit)가 네트워크 주소이며 나머지 3byte(24bit)가 호스트 주소이다.

5) 2^7 = 128 개의 네트워크가 존재한다.

6) 1개의 네트워크는 2^24 = 16,777,216 개의 호스트를 각각 가질 수 있다.

7) 10.0.0.0 부터 10.255.255.255 사이의 IP 주소들은 내부 IP 주소로 사용되기 때문에 공인 IP 주소로는 사용하지 못하며 사설 네트워크에서 사용되는 IP 주소이다.

8) 127.0.0.0 부터 127.255.255.255 사이의 IP 주소들은 자기자신을 가리키기 위한 루프백네트워크 IP 주소로 사용된다.


2. B 클래스

1) 128.0.0.0 부터 191.255.255.255 사이의 IP 주소들이 B 클래스에 속하는 주소들이다.

2) 첫번째 숫자가 192 ~ 223 사이의 값을 가진다.

3) 전체 IP 주소 32bit 중 첫번째가 10 으로 시작한다. (2진수 표기에서)

4) 첫번째 2byte(16bit)까지가 네트워크주소이며 나머지 2byte(16bit)가 호스트주소이다.

5) 2^14 = 16,348 개의 네트워크가 존재한다.

6) 1개의 네트워크는 2^16 = 65,536 개의 호스트를 각각 가질 수 있다.

7) 172.16.0.0 부터 172.31.0.0 사이의 IP 주소들은 내부 IP 주소로 사용하기 때문에 공인 IP 주소로 사용하지 못하며 사설 네트워크 에서 사용되는 IP 주소이다.


3. C 클래스

1) 192.0.0.0 부터 223.255.255.255 사이의 IP 주소들이 C 클래스에 속하는 IP 주소들이다.

2) 첫번째 숫자가 192~223사이의 값을 가진다.

3) 전체 IP 주소 32bit 중 첫번째가 110으로 시작한다.(2진수 표기에서)

4) 첫번째 3byte(24bit)까지가 네트워크주소이며 나머지 1byte(8bit)가 호스트주소이다.

5) 2^21 = 2,097,152 개의 네트워크가 존재한다.

6) 1 개의 네트워크는 2^8 = 256 개의 호스트를 각각 가질 수 있다.

7) 호스트 IP 주소 부분이 0 이면 해당 네트워크를 나타내는 네트워크주소로 사용된다.

8) 호스트 IP 주소 부분이 255 이면 해당 네트워크의 모든 호스트에게 동시에 전달하기 위한 목적으로 사용되는 해당 네트워크의 브로드캐스트 IP 주소로 사용된다.

9) 192.168.0.0 ~ 192.168.255.255 사이의 IP 주소는 내부 IP 주소로 사용되기 때문에 공인 IP 주소를 할당할 수 없으며 사설 네트워크를 사용할 때 사용한다.


4. D 클래스

1)  224.0.0.0 부터 239.255.255.255 사이의 IP주소들이 D 클래스에 속하는 IP 주소들이다.

2) 첫번째 숫자가 224~239 사이의 값을 가진다.

3) 이 클래스의 IP 주소들은 모두 호스트주소로 사용하지 않는 IP 주소들이다.

4) 전체 IP 주소 32bit 중 첫번째가 1110 으로 시작한다.(2진수 표기에서)

5) 멀티캐스팅(Multicasting)을 하기 위한 IP 주소들(Multicast Address) 이며 그룹 ID 라고 도 한다.


5. E 클래스

1) 240.0.0.0 부터 255.255.255.255 에 속하는 IP 주소들을 E 클래스라고 한다.

2) 첫번째 숫자가 240 ~ 255 사이의 값을 가진다.

3) 전체 IP 주소 32bit 중 첫부분이 11110 으로 시작한다.(2 진수 표기에서)

4) E 클래스 주소들은 특별히 정의되어있지 않으며 미래를 위해 남겨둔 주소들이다.

5) 간혹 실험적으로 사용되기도 하지만 E 클래스 범위에 속하는 IP 주소들은 실제 사용하는 IP 주소가 아니다.


[IP 주소에 대한 일반적인 규칙]

1. 127.0.0.1 주소는 자기자신의 loopback 주소(루프백주소)로 사용하기 위해 미리 예약되어 있다.


2. 0.0.0.0 은 default route 주소로 사용하기 위해 미리 예약되어 있다.


3. C 클래스에 있어 0 과 255는 호스트주소로 사용하지 않는다. 즉, 0은 네트워크주소로 사용되고 255는 브로드캐스트 주소로 각각 사용된다.


4. 네트워크주소는 각 네트워크의 가장 첫번째 주소를 사용한다. 즉, IP 주소를 표시하는 마지막 부분이 0 이면 특정 네트워크를 나타내기 위하여 사용된다.


5. 브로드캐스트 주소는 각 네트워크의 가장 마지막 주소를 사용한다. 즉, IP 주소를 표시하는 마지막 부분이 255 이면 특정 네트워크의 브로드캐스트주소로 주로 사용된다.


6. D 클래스 에 속하는 주소는 호스트주소로 사용하지 않는다.(멀티캐스트 용도로 사용)


[넷마스크(NetMask), 네트워크주소(Network Address), 브로드캐스트(Broadcast), 게이트웨이(Gateway)]


1. 넷마스크(NetMask)

- 하나의 네트워크를 몇 개의 네트워크로 나누어 사용할 때에 나뉘어진 각각의 네트워크를 구분하기 위해 사용하는 특수한 bit 를 의미한다. 정확한 명칭은 Subnet Mask 이다.


ex) C 클래스에 속하는 하나의 네트워크를 여러 개로 나누기(192.168.1.0)


나누는 네트워크갯수

나누어진 각네트워크 내에서 사용가능한 호스트수

사용하는 NetMask

1 개로 사용(나누지 않음)

254

255.255.255.0

2개

126

255.255.255.128

4개

62

255.255.255.192

8개

30

255.255.255.224

16개

14

255.255.255.240

32개

6

255.255.255.248


<총 호스트 IP 주소 갯수 계산방법>

하나의 네트워크를 n개의 네트워크로 나누었을 경우


⇒ { 56 - ( n * 2) } 개, 단 n은 짝수


<개별 네트워크에서 사용할 수 있는 호스트 IP 주소의 갯수 계산방법>


⇒ { ( 256 / n ) - 2 } 개, 단 n은 짝수


2. 네트워크주소(Network Address)

- 하나의 네트워크를 통칭하기 위해 사용하는 주소이다. C 클래스 하나로 특정 네트워크를 구성하려고 할 경우에 네트워크주소가 192.168.1.0 이라고 한다면 이 네트워크에 속하는 주소들은 192.168.1.0 부터 192.168.1.255 까지가 이에 속하게 된다.


네트워크 주소의 표현은 일반적으로 해당 네트워크의 맨 첫번째 IP 주소를 이용하여 표시

ex) 211.220.193.8 이라는 IP 주소가 있다면 네트워크주소는 211.220.193.0 이다.


3. 브로드캐스트(Broadcast)

- 네트워크에 속하는 모든 호스트들이 듣게되는 주소를 의미한다. 네트워크 주소와는 반대로 특정 네트워크의 맨 마지막 주소를 브로드캐스트주소로 사용한다.


ex) C 클래스 이며 네트워크 주소가 192.168.2.0 이라고 한다면 브로드캐스트 주소는 192.168.2.255 가 된다.


4. 게이트웨이(Gateway)

- 서로다른 네트워크를 연결해주는 역할을 하는 특정장비나 특정호스트를 의미한다. 게이트웨이로 사용되고 있는 가장 일반적인 장비는 라우터(Router)이며 리눅스 시스템도 게이트웨이로 사용할 수 있다.


패킷포워딩 : 일반적인 서버나 호스트에서는 특정 패킷을 받았을 대 자기자신의 패킷이 아니면 그냥 버린다. 하지만 게이트웨이는 라우팅테이블(Routing table)을 확인하여 받은 패킷을 가장 적합한 다른 네트워크로 전달해주는 역할을 IP 포워딩 or 패킷 포워딩 이라고 한다.


게이트웨이 IP 주소 사용 예


  1. 네트워크 IP 주소 : 192.168.1.0

  2. 브로드캐스트 IP 주소 : 192.168.1.255

  3. 호스트로 사용가능한 IP주소 범위 : 192.168.1.1 ~ 192.168.1.254

  4. 게이트웨이 IP 주소 : 192.168.1.254 (일반적으로 호스트로 사용가능한 IP 주소범위 중 가장 마지막 IP주소를 게이트웨이주소로 사용

  5. 서브넷마스크 : 255.255.255.0



반응형
반응형


정적 기초 분석을 수행하면서 임포트 테이블 정보를 수집하려 하거나 제대로 고급 기법을 이용하려 할 때 참고  


* accept

  들어오는 연결을 리스닝할 때 사용한다. 이 함수는 프로그램이 소켓에서 수신 연결을 리스닝하고 있음을 암시한다.


* AdjustTokenPrivileges

  특정 권한을 활성화하거나 비활성화할 때 사용한다. 프로세스 인젝션을 행하는 악성코드는 종종 추가 권한을 얻기 위해 이 함수를 호출한다.


* AttachThreadInput

  두 번째 쓰레드가 키보드나 마우스 같은 입력 이벤트를 수신할 수 있게 하나의 쓰레드가 다른 쓰레드의 입력을 처리할   때 사용한다. 키로거나 스파이웨어가 이 함수를 이용한다.


* bind

  들어오는 연결을 리스닝할 목적으로 로컬 주소에 연관 지을 때 사용한다.


* BitBlt

  한 장치에서 다른 장치로 그래픽 데이터를 복사할 때 사용한다. 스파이웨어는 이 함수를 이용해 화면을 캡쳐한다. 

  이 함수는 라이브러리 코드의 일부로 컴파일러가 종종 추가한다.


* CallNextHookEx

  SetWindowsHookEx가 설정한 이벤트를 후킹하는 코드 내에서 사용한다. CallNextHookEx 함수는 체인 내의 다음 후킹을 호출한다. 

  SetWindowsHookEx가 설정한 후킹의 목적을 알아내려면 CallNextHookEx을 호출한 함수를 분석하면 된다.


* CertOpenSystemStore

  로컬 시스템에 저장한 인증서에 접근할 때 사용한다.


* CheckRemoteDebuggerPresent

  특정 프로세스가 디버깅 중인지 확인한다. 이 함수는 때로 안티디버깅 기법의 일부로 사용한다.


* CoCreateInstance

  COM 객체를 생성한다. COM 객체는 광범위한 기능을 제공한다. 클래스 식별자(CLSID)를 통해 어떤 파일이 COM 체를 구현한 코드를 갖고 있는지 알 수 있다.


* connect

  원격 소켓에 연결할 때 사용한다. 악성코드는 명령 제어 서버에 연결하는 하위 수준의 함수를 종종 사용한다.


* ConnectNamedPipe

  접속하는 클라이언트 파이프를 기다리는 내부 프로세스 통신에 사용하는 서버 파이프를 생성한다.

  백도어와 리버스 쉘은 때로 ConnectNamedPipe를 이용해 명령 제어 연결을 단순화한다.


* ControlService

  실행 중인 서비스를 시작, 중지, 수정하거나 시그널을 보낼 때 사용한다.

  악성코드가 악의적인 서비스를 이용하고 있다면 호출 용도를 확인하기 위해 서비스를 

  구현한 코드를 분석할 필요가 있다.


* CreateFile

  새로운 파일을 생성하거나 기존 파일을 오픈한다.


* CreateFileMapping

  파일을 메모리로 로드하는 파일 매핑 핸들을 생성하고 메모리 주소를 통해 접근할 수 있게 한다.

  실행기(Launcher), 로더, 인젝터는 이 함수를 이용해 PE 파일을 읽고 수정한다.


* CreateMutex

  악성코드가 특정 시간에 시스템에서 하나의 인스턴스 생성만 보장하게 악성코드가 사용할 수 있는 

  상호 배제(mutual exclusion)를 생성한다. 

악성코드는 고정된 뮤텍스명을 이용하는데, 악성코드의 추가 감염을 탐지할  수 있는 좋은 호스트 기반의 감염 흔적으로 사용할 수 있다.


* CreateProcess

  새로운 프로세스를 생성하고 실행한다. 

  악성코드가 신규 프로세스를 생성하면 새로운 프로세스 역시 분석할 필요가 있다.


* CreateRemoteThread

  원격 프로세스(호출 프로세스가 아닌)에서 쓰레드를 시작할 때 사용한다.

  실행기와 은폐형 악성코드는 CreateRemoteThread를 이용해 다른 프로세스에 코드를 주입한다.


반응형
반응형

리눅스에서는 서버 이전 작업을 진행할때 데이터 이전 후 확인을 위해 도메인 테스트를 진행한다.


리눅스의 경우 /etc/hosts 에서 수정을 해서 사용하는데


윈도우에서도 테스트 하는 방법이 있다.


1. 메모장(notepad)를 관리자 권한으로 실행


2. 파일 탭에서 열기 -> C:\Windows\System32\drivers\etc\hosts 파일을 오픈



* 파일 이름 옆쪽 탭에 보면 기존에는 .txt(텍스트)로 지정이 되어있는데 이 부분을 모든 파일로 변경하면 hosts파일이 보인다.


3. hosts 파일을 열어보면 다음과 같이 주석처리가 되어있고 예제가 있다. 예제를 참고하여 테스트할 도메인 및 IP 추가



4. 모든 브라우저를 닫기 or 새로운 브라우저를 띄워서 테스트할 도메인을 입력 후 홈페이지 확인


5. 테스트가 완료되면 hosts 파일을 원복 시킬 것

반응형
반응형


http://www.senderbase.org


SPAM 탭을 클릭하고 서버 IP나 도메인 주소를 입력하면 해당 메일서버의 상태를 알 수 있다.


상태에 Natural 또는 Good 일 경우 메일서버 상태는 정상, pool, bad 의 경우 블럭이 된 것이다.


http://www.anti-abuse.org/multi-rbl-check-results

전체적인 스팸 블랙리스트를 확인 가능


오픈 릴레이 테스트

http://www.mailradar.com/openrelay/

들어가서 메일서버 IP를 입력하고 테스트를 하면 오픈 릴레이 테스트가 진행된다.

PASS가 나오면 정상적인 것




반응형
반응형

커널 버전별 의미

2.6.32-504.16.2.el6.x86_64

2 : Majer Number

6 : Minor Number로 홀수,짝수에 따라 버전이 틀리다. (짝수:안정버전, 홀수:개발버전)

32 : patch된 횟수

- 504 : 컴파일 횟수

16.2 : 필요한 정보를 지정

el6 : redhat 6(CentOS 6) 기반

x86_64 : 아키텍쳐 버전 64비트


Red Hat Enterprise Linux 4


Kernel Version

Release / Update

2.6.9-5

REHL 4 GA

2.6.9-11

REHL 4 Update 1

2.6.9-22

REHL 4 Update 2

2.6.9-34

REHL 4 Update 3

2.6.9-42

REHL 4 Update 4

2.6.9-55

REHL 4 Update 5

2.6.9-67

REHL 4 Update 6

2.6.9-78

REHL 4 Update 7

2.6.9-89

REHL 4 Update 8

2.6.9-100

REHL 4 Update 9


Red Hat Enterprise Linux 5


Kernel Version

Release / Update

2.6.18-8

REHL 5 GA

2.6.18-53

REHL 5 Update 1

2.6.18-92

REHL 5 Update 2

2.6.18-128

REHL 5 Update 3

2.6.18-164

REHL 5 Update 4

2.6.18-194

REHL 5 Update 5

2.6.18-238

REHL 5 Update 6

2.6.18-274

REHL 5 Update 7

2.6.18-308

REHL 5 Update 8

2.6.18-348

REHL 5 Update 9

2.6.18-371

REHL 5 Update 10

TBA

REHL 5 Update 11


Red Hat Enterprise Linux 6


Kernel Version

Release / Update

2.6.32-71

REHL 6 GA

2.6.32-131.0.15

REHL 6 Update 1

2.6.32-220

REHL 6 Update 2

2.6.32-279

REHL 6 Update 3

2.6.32-358

REHL 6 Update 4

2.6.32-431

REHL 6 Update 5

2.6.32-504

REHL 6 Update 6


Red Hat Enterprise Linux 7


Kernel Version

Release / Update

3.10.0-54.0.1

REHL 7 Beta

3.10.0-121

REHL 7 RC


반응형

'운영체제(OS) > 리눅스(Linux)' 카테고리의 다른 글

리눅스 스케쥴러 cron  (0) 2017.07.16
리눅스 원격파일 전송 명령어 scp  (0) 2017.07.14
리눅스 TCP Wrapper  (0) 2017.07.14
리눅스 레드마인 설치  (0) 2017.07.13
리눅스 파일 속성  (0) 2017.07.13
반응형

** 실전 악성코드와 멀웨어 분석에 나오는 연습문제를 공부할 겸 풀이한 것입니다.


1. http://www.VirusTotal.com/ 에 Lab01-04.exe 파일을 업로드하자. 기존 안티바이러스에 정의된 것과 일치하는가?


Lab01-04.exe 파일을 업로드 한 결과는 다음과 같다.

This file was last analysed by VirusTotal on  2017-07-11 05:29:14 UTC (1일, 3시간 ago) it was first analysed by VirusTotal on  2011-07-06 00:05:42 UTC.


탐지 비율: 52/62


안티바이러스

결과

Ad-Aware

Gen:Trojan.Heur.RP.cqW@aqIk5pji

AegisLab

Troj.W32.Generic!c


2. 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가? 파일이 패킹돼 있고 가능하다면 언패킹해보자.


[PEiD 프로그램 실행 결과]

Visual C++ 6.0 으로 컴파일이 되어있으며 별도의 패킹은 되어있지 않은 것으로 보인다.

(PEview를 이용해 열어보아도 정상적으로 임포트를 확인 할 수 있었다.)


3. 이 프로그램은 언제 컴파일됐는가?


PEview에서 Time Date Stamp 컴파일 시간이 2019/08/30 22:26:59 UTC로 나와있다.

하지만 현재는 2017년 이므로 이 파일의 컴파일 시간은 조작이 되었을 가능성이 있으며

따라서 컴파일 시간을 신뢰할 수 없다.


4. 임포트를 보고 악성코드의 기능을 알아낼 수 있는가?  그렇다면 어떤 임포트를 보고 알 수 있었는가?


advapi32.dll의 임포트 함수는 프로그램이 권한을 가지고 무언가를 했음을 암시한다.

WinExec, WriteFile의 임포트 함수를 통해 VirusTotal.com 결과를 보면 프로그램이 파일을 디스크에 쓰고 실행함을 알 수 있다.






5. 감염된 시스템에서 악성코드를 인식하는 데 어떤 호스트 기반이나 네트워크 기반의 증거를 사용했는가?


Lab01-04.dll 파일을 PEview로 열어 문자열을 확인해보면 \system32\wupdmgr.exe는 이 함수가 해당 위치에서 파일을 생성하거나 수정함을 암시한다.

문자열 www.malwareanalysisbook.com/updater.exe 은 추가 악성코드를 저장하고 다운로드를 준비하는 것으로 보인다.



6. 이 파일은 리소스 섹션에 하나의 리소스가 있다. Resource Hacker를 이용해 리소스를 점검하고 리소스를 추출해보자. 리소스로부터 무엇을 알 수 있는가?


Resource Hacker 프로그램으로 Lab01-04.exe 파일을 열어보면 BIN 리소스를 볼 수 있는데

데이터를 보면 대부분 의미가 없다. 하지만 문자열을 주목해보면 이 프로그램은 DOS 모드에서 동작할 수 없다. 이 문자열은 모든 PE 파일의 시작점에서 DOS 헤더에 포함되는 에러 메시지다.


이 파일을 리소스 해커로 계속 분석하기 위해서는 Action -> Save Resource to a *.bin file 을 클릭하고 리소스를 저장 후 PEview 에서 파일을 열어 임베드 파일을 분석하자.



리소스 추출 결과 URLDownloadToFile 임포트를 확인할 수 있으며 이는 추가 악성코드를 다운로드하는 다운로더 프로그램이다.


반응형
반응형

** 실전 악성코드와 멀웨어 분석에 나오는 연습문제를 공부할 겸 풀이한 것입니다.


1. http://www.VirusTotal.com/ 에 Lab01-03.exe 파일을 업로드하자. 기존 안티바이러스에 정의된 것과 일치하는가?


Lab01-03.exe 파일을 업로드 한 결과 패커로 탐지가 되는 것을 확인하였다.


This file was last analysed by VirusTotal on  2017-07-11 05:11:41 UTC (1일, 3시간 ago) it was first analysed by VirusTotal on  2011-07-04 22:00:08 UTC.


탐지 비율: 56/63


안티바이러스

결과

Ad-Aware

Packer.FSG.A

ALYac

Packer.FSG.A  


2. 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가? 파일이 패킹돼 있고 가능하다면 언패킹해보자.


해당 파일을 PEiD 프로그램으로 돌려본 결과 FSG 1.0 패커로 패킹이 되어있다.

따라서 현재 배웠던 UPX 언패킹 프로그램으로는 언패킹이 불가능하다.



3. 임포트를 보고 악성코드의 기능을 알아낼 수 있는가? 그렇다면 어떤 임포트를 보고 알 수 있었는가?


2번 문제 처럼 현재 패킹이 되어있는 상태여서 PEview로 파일을 확인해보면 임포트를 확인할 수 가 없다.

따라서 언패킹이 진행이 되어야 확인이 가능할 것으로 보인다.


4. 감염된 시스템에서 악성코드를 인식하는 데 어떤 호스트 기반이나 네트워크 기반의 증거를 사용했는가?


3번 문제와 마찬가지로 언패킹이 진행되어야 한다.


반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

악성코드 분석가가 주로 보게 되는 윈도우 함수 1  (0) 2017.07.13
1장 연습문제 1-4  (0) 2017.07.13
1장 연습문제 1-2  (0) 2017.07.13
1장 연습문제 1-1  (0) 2017.07.13
윈도우 공통 DLL  (0) 2017.07.13

+ Recent posts