336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. init 프로세스와 inittab 파일
pid 1 번인 init 프로세스는 사용자들을 위해서 시스템을 설정하게 된다.
pid 0 인 프로세스가 초기화된 커널의 바탕에서 나머지 작업을 수행한다.
  - init 프로세스(/sbin/init)가 하는일
    1) 파일시스템 구조 검사
    2) 파일시스템 마운트(mount프로그램이 아닌 커널의 Virtual File System에서 마운트)
    3) 서버에 데몬을 로드한다.
    4) 사용자의 로그인을 기다린다.
    5) 사용자가 로그인 하면, 사용자를 위한 Shell을 로드한다.


init 가 처음 시작해서 수행해야 할 작업들을 설정한 파일은 "/etc/inittab"
init 는 새로운 실행레벨에서 실행할 프로세스를 결정하기 위해서 항상 이 파일을 참조


inittab 파일은 시스템의 상태에 따라서 해당하는 런레벨에서 init 프로세스가 수행해야 할 일들을 서술해 놓은 파일이다.
init 프로그램은 inittab 파일을 참조하여 새로운 런레벨에서 실행할 수 없는 프로세스가 만약 지금 실행중이면 그 프로세스를 죽이고,

새로운 런레벨 에서 실행해야만 하는 프로세스 중 현재 실행되고 있지 않은 프로세스는 새로 실행을 시킨다.



2. runlevel (/etc/inittab)

- 런레벨은 선택된 그룹의 프로세스만 시스템에서 실행되도록 허락 하기 위해 만든 소프트웨어 설정

- init 프로그램은 BSD 스타일과 system V 스타일의 두종류가 존재한다. 레드햇계열에서는 system V 스타일을 사용한다.


각 런레벨(ren level) 에 대한 대략적인 내용이 명시되어 있다.

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)     //시스템을 종료
# 1 - Single user mode                         //싱글 유저 모드에서 사용되는 레벨, 프롬프트에서 "linux single" 입력시 런레벨 1에서 시작
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)    //NFS 를 지원하지 않는 다중 사용자 모드를 정의
# 3 - Full multiuser mode                      //네트워킹을 지원하는 다중 사용자 모드
# 4 - unused                    //사용자 정의 있는 런레벨, 원하는 데몬이나 서비스를 /etc/rc.d/rc4.d 내에 위치
# 5 - X11                      // X를 실행시키기 위한 런레벨
# 6 - reboot (Do NOT set initdefault to this)    //시스템을 재부팅시키도록 정의된 런레벨

............

id:3:initdefault:              //id:run-levels:action:process, 디폴트런레벨, 0 또는 6 옵션지정에 의한 무한부팅 시 lilo에 옵션을 주어 변경

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

............

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

............



3. man inittab

id:run-levels:action:process


id : label, 식별자, 최대 4자리, "예) tty1 > 1:2345:respawn:/sbin/mingetty tty1"

run-levels : 런레벨

action : 어떤방식으로 실행할지 설정

process : 프로세스의 실행파일의 경로와 프로세스에 넘겨줄 인수, 이 필드에 `+' 문자가 제일 앞에 오면, init는 그 처리과정에서 utmp, wtmp 처리를 하지 않게 한다. `+' 문자는 gettys에서 스스로 utmp/wtmp를 처리할 경우 필요하다.


※ action의 종류

wait : 프로세스를 실행하고, 다음 줄의 엔트리로 가지 말고, 실행한 프로세스가 종료할때까지 대기한다.
respawn : 프로세스를 실행하고, 그 프로세스가 죽게 되면, 다시 실행시키라는 의미, 주로 getty 등의 프로세스
initdefault : 디폴트 런레벨을 지정, 런레벨 3을 디폴트 런레벨로 지정한다는 의미

               즉, 시스템의부트 프로세스가 종료된 후에 진입할 런레벨을 가리키는 엔트리
               initdefault 사용 시 process 필드는 아무런 의미가 없게 된다.
off : 아무것도 하지 말라는 뜻
once :  이미 실행되고 있는 프로세스라면 실행하지 말고, 실행되고 있지 않으면 한번만 실행, wait처럼 대기하지 않는다.

boot : 시스템 부팅시에 실행되어야 할 프로세스를 가리킨다. run-levels 필드는 아무런 의미가 없게 된다.

bootwait : 프로세스가 시스템 부팅시에 실행되도록 지정한다. (예: /etc/rc)
sysinit : 프로세스가 시스템 부트시에 실행, 이 엔트리는 다른 boot 나 bootwait 엔트리들이 실행되기 전에 실행되며,

run-levels 필드는 무시한다.
powerwait : init 프로세스가 SIGPWR 시그널을 받으면 실행되는 프로세스

            SIGPWR 시그널은 전원과 관련해서 무엇인가 문제가 있음을 가리키는 시그널이며,

init 는 프로세스가 종료되기까지 대기한다.

powerfail : powerwait 항목과 비슷하지만 프로세스가 종료되기까지 대기하지 않고 바로 실행한다는 점에서 다르다.
powerokwait : 이 엔트리도 init 가 SIGPWR 시그널을 받으면 실행될 프로세스를 지정하지만,

              이 엔트리에서 지정된 프로세스는 /etc/powerstatus 파일에 OK 라는 단어가 있을 때만 실행된다.
              즉, 전원이 다시 돌아왔을 때만 실행

ctrlaltdel : init 가 SIGINT 시그널을 받게 되면 실행할 프로세스를 지정한다.

             즉, 시스템 콘솔에서 CTRL-ALT-DEL 키를 눌렀을 때 이 엔트리에서 지정한 프로세스가 실행된다.
kbrequest : 이 엔트리에서 지정하는 프로세스는 init가 키보드 핸들러로부터

콘솔에서 특수키 조합이 눌려졌다는 시그널을 받으면 실행되는 프로세스이다. 키맵과 함께 쓰일 수 있다.


'Analysis > Linux' 카테고리의 다른 글

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
리눅스 시스템 정보 체크  (0) 2016.06.21
grep  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

커널 드라이버 서비스 상태 확인

  - sc query

  - sc queryex


참고 : http://www.makeuseof.com/tag/control-running-services-sr-command-windows/

'Analysis > Windows' 카테고리의 다른 글

SysWOW64란?  (0) 2016.07.18
Windbg 사용  (0) 2016.06.23
WebDAV에서 사용하는 메소드  (0) 2016.06.21
윈도우 보안 이벤트 // IIS 로그 분석  (0) 2016.06.21
윈도우 커맨드라인 명령어  (0) 2016.04.07
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

import wmi

# Obtain network adaptors configurations


nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)

# First network adaptor


nic = nic_configs[0]

# IP address, subnetmask and gateway values should be unicode objects


ip = u'192.168.0.11'
subnetmask = u'255.255.255.0'
gateway = u'192.168.0.1'

# Set IP address, subnetmask and default gateway
# Note: EnableStatic() and SetGateways() methods require *lists* of values to be passed


nic.EnableStatic(IPAddress=[ip],SubnetMask=[subnetmask])
nic.SetGateways(DefaultIPGateway=[gateway])


============================================================


#Here is how to revert to obtaining an IP address automatically (via DHCP):


import wmi

# Obtain network adaptors configurations


nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)

# First network adaptor


nic = nic_configs[0]

# Enable DHCP


nic.EnableDHCP()

'Analysis > Python' 카테고리의 다른 글

[Python] with, seek, tell  (0) 2016.08.03
Python 리스트(배열)  (0) 2016.07.05
Python Random 함수  (0) 2016.07.05
base64로 인코딩된 바이너리 파일 확인  (0) 2016.03.31
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


1.GRE 터널링

1)Host_A(192.168.1.10/24)                                                                                            
  - Dst: Host_B(사설IP: 192.168.2.10/24)                
  - Src: Host_A(사설IP: 192.168.1.10/24)             


2)Router_A(GRE터널링: int tunnel 0, 172.16.0.1/30, src 222.222.1.10/24, dst 222.222.2.10/24) 
- Dst:Router_B(공인IP: 222.222.2.10/24)[Dst: Host_B(사설IP: 192.168.2.10/24)]
- Src:Router_A(공인IP: 222.222.1.10/24)[Src: Host_A(사설IP: 192.168.1.10/24)]


3)Router_B(GRE터널링: int tunnel 0, 172.16.0.2/30, src 222.222.2.10/24, dst 222.222.1.10/24)                                      
  - Dst:Router_B(공인IP: 222.222.2.10/24)[Dst: Host_B(사설IP: 192.168.2.10/24)]      
  - Src:Router_A(공인IP: 222.222.1.10/24)[Src: Host_A(사설IP: 192.168.1.10/24)]       


4)Host_B(192.168.2.10/24)
  - Dst: Host_B(사설IP: 192.168.2.10/24)
  - Src: Host_A(사설IP: 192.168.1.10/24)

 

패킷구조 > FRAME = [ETHERNET_Header] [IP_Header(222.222.x.x)] [GRE_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload]

 


2.IPSec터널링

단순히 GRE 터널링을 통한 VPN 사용은 기밀성에 취약하다.
IPSec을 사용함으로써 기밀성, 무결성(HMAC)을 보장할 수 있다.

IPSec 동작에는 3개의 터널이 필요하다.
첫번째 터널은 암호화에 필요한 키교환 터널이고
두번째와 세번째 터널은 암호화된 데이터(트래픽)가 전송되는 터널이다.

 

1) IKE 1단계
1-1) 1단계 키교환 협상(Main-Mode)
  VPN_A : 보안정책리스트 전달
  VPN_B : 보안정책 응답
  VPN_A : 키정보 공유(Diffie-Hellman 알고리즘)
  VPN_B : 키정보 공유(Diffie-Hellman 알고리즘)
  VPN_A : IPSec 피어 인증 시작
  VPN_B : IPSec 피어 인증 응답
  양방향 보안채널생성(ISAKMP SA) : 키 정보 교환(암호화종류, 해시종류, 키정책등 교환)

 

1-2) 1단계 키교환 협상(Aggressive-Mode)
  VPN_A : 보안정책(키/인증정보 포함) 전달
  VPN_B : 보안정책 응답
  VPN_A : 암호화 해시 정보 전달
  양방향 보안채널생성(ISAKMP SA) : 키 정보 교환(암호화종류, 해시종류, 키정책등 교환)

 

2) IKE 2단계
  양방향 보안채널생성(ISAKMP SA) 후 트래픽 암호화를 위한 보안터널생성(IPSec SA)
  보안터널(IPSec SA)은 단방향 터널이다. 그러므로 송신 IPSec 터널과 수신 IPSec 터널이 생성된다.


  패킷의 암호화에는 AH(Athentication Header) 프로토콜과 ESP(Encapsulating Security Payload) 프로토콜이 사용된다.
    - AH : 암호화를 제공하지 않고 패킷 조작 여부 같은 확인 작업만 한다. (무결성)
    - ESP : 상위 계층 정보인 페이로드의 암호화를 진행한다. (일부 무결성+기밀성)

 

  2-1) AH 터널모드 패킷구조  > [IP_Header(222.222.x.x)] [AH_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload]
        - 인증 구간 > [IP_Header(222.222.x.x)] [AH_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload]


  2-2) AH 전송모드 패킷구조  > [IP_Header(192.168.x.x)] [AH_Header] [TCP_Header] [Payload]
        - 인증 구간 > [IP_Header(192.168.x.x)] [AH_Header] [TCP_Header] [Payload]

 

  2-3) ESP 터널모드 패킷구조 > [IP_Header(222.222.x.x)] [ESP_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 인증 구간 > [ESP_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 암호화 구간 > [IP_Header(192.168.x.x)] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]


  2-4) ESP 전송모드 패킷구조 > [IP_Header(192.168.x.x)] [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 인증 구간 > [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer]
        - 암호화 구간 > [TCP_Header] [Payload] [ESP_Trailer]

 

  2-5) AH+ESP 전송모드 패킷구조 > [IP_Header(192.168.x.x)] [AH_Header] [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]

        - 인증 구간 > [IP_Header(192.168.x.x)] [AH_Header] [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 암호화 구간 > [TCP_Header] [Payload] [ESP_Trailer]


참고 : IP Protocol Number - icmp=1, igmp=2, tcp=6, udp=17, gre=47, eigrp=88, ospf=89

 


GRE over IPSec VPN : 인터넷을 통한 본사와 지점간의 통신에 사용

SSL VPN : 집에서 회사간 통신에 사용


 

'Analysis > Network' 카테고리의 다른 글

Tcpdump usage examples  (0) 2016.04.26
HTTPS와 SSL 이해  (0) 2016.04.15
Next Squence Number  (0) 2016.03.24
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

with : with문이 종료되면 별도로 close해주지 않아도 열었던 파일을 닫아준다. 

with open(r'C:\test\test.bin', 'wb') as fout:
    fout.write('test')


.tell()     //함수는 파일의 시작으로부터의 현재 오프셋을 바이트 단위로 반환
.seek()   //함수는 다른 바이트 오프셋으로 위치를 이동

fin = open(r'C:\test\test.bin', 'rb')       //예) 256바이트 이진파일
fin.seek(-1, 2)         //255, 파일의 마지막에서 1바이트 전 위치로 이동
fin.tell()                 //결과 : 255

fin.seek(254, 0)       //254, 파일의 마지막에서 2바이트 전 위치로 이동
fin.tell()                 //결과 : 254


'Analysis > Python' 카테고리의 다른 글

[Python] wmi  (0) 2016.08.10
Python 리스트(배열)  (0) 2016.07.05
Python Random 함수  (0) 2016.07.05
base64로 인코딩된 바이너리 파일 확인  (0) 2016.03.31
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

IE9 호환성보기 목록 URL

 - http://ie9cvlist.ie.microsoft.com/IE9CompatViewList.xml

'Analysis > Malware' 카테고리의 다른 글

PEiD Signatures  (0) 2016.07.28
Packed.Dropper.PE  (0) 2016.07.27
[로컬 백도어] Image file execution option  (0) 2016.06.21
GenPack:Trojan.Generic  (0) 2016.06.21
CryptXXX Decryptor  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

http://handlers.sans.org/jclausing/userdb.txt
http://reverse-engineering-scripts.googlecode.com/files/UserDB.TXT
http://research.pandasecurity.com/blogs/images/userdb.txt

https://raw.githubusercontent.com/guelfoweb/peframe/5beta/peframe/signatures/userdb.txt #


pypeid > https://github.com/libcrack/python-peid


pefile > https://github.com/erocarrera/pefile

 - 내장된 peutils는 3.x버전이다. 2.x버전을 사용하기위해서는 peutils만 아래 파일로 import

   - python 2.7 > https://github.com/hiddenillusion/AnalyzePE/blob/master/peutils.py


'Analysis > Malware' 카테고리의 다른 글

IE9 호환성보기 목록  (0) 2016.08.03
Packed.Dropper.PE  (0) 2016.07.27
[로컬 백도어] Image file execution option  (0) 2016.06.21
GenPack:Trojan.Generic  (0) 2016.06.21
CryptXXX Decryptor  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

packed.zip


악성코드 정보.1
 - 종류 : Packed.Backdoor.PE(1)
 - md5 : 259c82d6db2883dd135c87b0feb44069

   ☞ 악성코드의 C&C 접속
     - IP: 190.185.124.125, Port:443
     - IP: 202.137.244.198, Port:443   
     - IP: 220.132.191.110, Port:443


악성코드 정보.2
 - 종류 : Packed.Dropper.PE
 - md5 : 036bae8dd72bd70761960a90ea631ff1

   ☞ 악성코드 드랍경로
     - %USERPROFILE%\AppData\Local\\Microsoft\Office\15.0\msoia.exe /update

     - 종류 : Packed.Backdoor.PE(2)
     - md5 : 133a436ddb128520d5061e020f09cb16

   ☞ 드랍된 악성코드 복제경로

     - %USERPROFILE%\AppData\Local\Microsoft\Internet Explorer\IECompatData\ielowutil.exe /autostart

     - 종류 : Packed.Backdoor.PE(2)
     - md5 : 133a436ddb128520d5061e020f09cb16

   ☞ 드랍된 악성코드의 C&C 접속
     - IP: 190.185.124.125, Port:443
     - IP: 202.137.244.198, Port:443   
     - IP: 220.132.191.110, Port:443



'Analysis > Malware' 카테고리의 다른 글

IE9 호환성보기 목록  (0) 2016.08.03
PEiD Signatures  (0) 2016.07.28
[로컬 백도어] Image file execution option  (0) 2016.06.21
GenPack:Trojan.Generic  (0) 2016.06.21
CryptXXX Decryptor  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

다운로드 : http://yasm.tortall.net/Download.html
 - Win32 VS2010.zip

파일명 변경 : vsyasm.exe > yasm.exe
복사 : C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\

파일명 변경 : vsyasm.props, vsyasm.targets, vsyasm.xml > yasm.props, yasm.targets, yasm.xml
복사 : C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\

도구 > 옵션 > 프로젝트 및 솔루션 > VC++ 프로젝트설정 > 빌드 사용자 지정 검색 경로에 아래 경로 입력
  - C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations


***실행파일명같은경우에는 .asm파일의 속성에서 사용자지정빌드도구에서 명령줄에서 수정이 가능하다.



Readme.txt

========================================================================

The YASM version vsyasm.exe is designed specifically for use
with Visual Studio 2010. To tell Visual Studio where to find
vsyasm.exe, the environment variable YASMPATH can be set to
the absolute path of the directory in which vsyasm.exe is
located (this path should include the final backslash).

Alternatively you can find the directory (or directories)
where the VC++ compiler binaries are located and put copies
of the vsyasm.exe binary in these directories. The typical
location on 64-bit Windows is:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

On 32-bit Windows it is normally at:
 
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

Depending on your system you can use either the win32 or the
x64 version of vsyasm.exe, which must be named vsyasm.exe.

To use the new custom tools facility in Visual Studio 2010, you
need to place a copy of three files - yasm.props, yasm.targets
and yasm.xml - into a location where they can be found by the
Visual Studio build customisation processes.  There are several
ways to do this:

  a. put these files in the MSBUILD customisation directory,
  which is typically at:

    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations
 
  or:
 
    C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations

  b. put them in a convenient location and set this path in the
     'Build Customisations Search Path' in the Visual Studio
     'Projects and Solutions|VC++ Project Settings' item in
     the 'Tools|Options' menu;

  c. put them in a convenient location and set this path in the
     'Build Customisation dialogue (discussed later).

To use YASM in a project, right click on the project in the Solution
Explorer and select 'Build Customisations..'. This will give you a
dialog box that allows you to select YASM as an assembler (note that
your assembler files need to have the extension '.asm').  If you have
used option c. above, you will need to let the dialogue find them
using the 'Find Existing' button below the dialogue.

To assemble a file with YASM, select the Property Page for the
file and the select 'Yasm Assembler' in the Tool dialog entry.
Then click 'Apply' and an additional property page entry will
appear and enable YASM settings to be established.
========================================================================

'Analysis > Assembly' 카테고리의 다른 글

LEA와 MOV의 차이점  (0) 2016.04.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

SysWOW64란?

%SystemRoot%\SysWOW64 디렉토리는 %SystemRoot%\system32 디렉토리가 리다이렉트된 디렉토리이며
64비트에서 32비트 시스템 프로그램이 %SystemRoot%\system32 디렉토리에서 읽고 쓰는 내용은 모두 %SystemRoot%\SysWOW64로 리다이렉트된다.

System32 디렉토리에서는 64비트 프로그램이 저장돼있는 반면, 32비트 프로그램은 SysWOW64  디렉토리에 존재한다.

WoW64 환경에서 32비트 프로그램이 HKLM\Software에 읽고 쓰는 데이터는 HKLM\SOFTWARE\Wow6432Node로 리다이렉트되며
64비트 시스템에서 32비트 악성코드가 HKLM\Software에 읽고 쓰는 흔적은 HKLM\SOFTWARE\Wow6432Node에 존재한다.
만약, 32비트 악성코드가 레지스트리 Run 항목에 자동실행을 등록한다면 해당 흔적은 아래와 같은 위치에 존재한다.
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

64비트 환경에서 실행된 32비트 악성코드의 흔적은 %SystemRoot%\SysWOW64 하위에서 찾는다.
32비트 프로그램에서 시스템 권한을 사용하는 데이터 흔적은 "%SystemRoot%\system32\config\systemprofile"가 아닌 "%SystemRoot%\SysWOW64\config\systemprofile"에서 찾아야 된다.

'Analysis > Windows' 카테고리의 다른 글

sc query  (0) 2016.08.11
Windbg 사용  (0) 2016.06.23
WebDAV에서 사용하는 메소드  (0) 2016.06.21
윈도우 보안 이벤트 // IIS 로그 분석  (0) 2016.06.21
윈도우 커맨드라인 명령어  (0) 2016.04.07

+ Recent posts