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

Tcpdump usage examples
> tcpdump -ni eth0 src host 192.168.1.1 and dst host 172.16.1.1 and dst port 23 -s 1500 -w /tmp/tr.pcap

> tcpdump -i eth0 -c 10 -w [Filename]     // 송수신 되는 패킷들 파일에 저장 및 확인 (10개 카운트)

> tcpdump -r [Filename]                       // TCPDUMP에 저장된 패킷헤더 확인

> tcpdum -Xqnr [Filename].log               // 캡쳐한 tcpdump.log파일의 내용을 ASCII모드로 확인


* 스니핑모드(tcpdump 실행시) 발생되는 로그

  eth0: Setting promiscuous mode.
  device eth0 entered promiscuous mode
  device eth0 left promiscuous mode

목적지 주소가 1.2.3.x/24 와 1.2.4.x/25 이고 80번포트인 패킷 캡쳐
> tcpdump -q \( dst net 1.2.3.0/24 or 1.2.4.0/25 \) and dst port 80
 
A 호스트로/부터의 모든 도착/출발 패킷 출력
> tcpdump host A

A 호스트와 B 또는 C 사이의 모든 트래픽 출력
> tcpdump host A and \( B or C \)

A호스트와 B를 제외한 호스트 간의 모든 IP 패킷 출력
> tcpdump ip host A and not B

로컬호스트와 Berkeley의 호스트들 간의 모든 트래픽 출력
> tcpdump net ucb-ether

게이트웨이 A를 통한 모든 ftp 트래픽 출력
> tcpdump 'gateway A and (port ftp or ftp-data)'

로컬네트워크로/부터가 아닌 모든 트래픽 출력
> tcpdump ip and not net

로컬네트워크가 아닌 TCP 시작과 마지막 패킷 출력
> tcpdump 'tcp[13] & 3 != 0 and not src and dst net '

게이트웨이 A를 통해 보내지는 576 Bytes보다 긴 IP 패킷 출력
> tcpdump 'gateway A and ip[2:2] > 576'

이더넷이 아닌 IP 브로드 또는 멀티 캐스트 패킷 출력
> tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

echo 요청/응답이 아닌 모든 ICMP 패킷 출력 (ping 아닌 패킷) 
> tcpdump 'icmp[0] != 8 and icmp[0] != 0'

1.2.3 과 1.2.4 IP주소 (내부) 패킷을 제외한 모든 패킷 출력
> tcpdump src net 1.2.3 or 1.2.4 and not dst net 1.2.3 or 1.2.4

br1 인터페이스의 모든 패킷 출력
> tcpdump -i br1
See the list of interfaces on which tcpdump can listen:
tcpdump -D

Listen on interface eth0:
tcpdump -i eth0

Listen on any available interface (cannot be done in promiscuous mode. Requires Linux kernel 2.2 or greater):
tcpdump -i any

Be verbose while capturing packets:
tcpdump -v

Be more verbose while capturing packets:
tcpdump -vv

Be very verbose while capturing packets:
tcpdump -vvv

Be verbose and print the data of each packet in both hex and ASCII, excluding the link level header:
tcpdump -v -X

Be verbose and print the data of each packet in both hex and ASCII, also including the link level header:
tcpdump -v -XX

Be less verbose (than the default) while capturing packets:
tcpdump -q

Limit the capture to 100 packets:
tcpdump -c 100

Record the packet capture to a file called capture.cap:
tcpdump -w capture.cap

Record the packet capture to a file called capture.cap but display on-screen how many packets have been captured in real-time:
tcpdump -v -w capture.cap

Display the packets of a file called capture.cap:
tcpdump -r capture.cap

Display the packets using maximum detail of a file called capture.cap:
tcpdump -vvv -r capture.cap

Display IP addresses and port numbers instead of domain and service names when capturing packets (note: on some systems you need to specify -nn to display port numbers):
tcpdump -n

Capture any packets where the destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n dst host 192.168.1.1

Capture any packets where the source host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n src host 192.168.1.1

Capture any packets where the source or destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n host 192.168.1.1

Capture any packets where the destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n dst net 192.168.1.0/24

Capture any packets where the source network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n src net 192.168.1.0/24

Capture any packets where the source or destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n net 192.168.1.0/24

Capture any packets where the destination port is 23. Display IP addresses and port numbers:
tcpdump -n dst port 23

Capture any packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n dst portrange 1-1023

Capture only TCP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n tcp dst portrange 1-1023

Capture only UDP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n udp dst portrange 1-1023

Capture any packets with destination IP 192.168.1.1 and destination port 23. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and dst port 23"

Capture any packets with destination IP 192.168.1.1 and destination port 80 or 443. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and (dst port 80 or dst port 443)"

Capture any ICMP packets:
tcpdump -v icmp

Capture any ARP packets:
tcpdump -v arp

Capture either ICMP or ARP packets:
tcpdump -v "icmp or arp"

Capture any packets that are broadcast or multicast:
tcpdump -n "broadcast or multicast"

Capture 500 bytes of data for each packet rather than the default of 68 bytes:
tcpdump -s 500

Capture all bytes of data within the packet:
tcpdump -s 0


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

[VPN] 터널링  (0) 2016.08.09
HTTPS와 SSL 이해  (0) 2016.04.15
Next Squence Number  (0) 2016.03.24
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
GetTickCount를 이용한 디버깅 탐지

특정 루틴 시작 전과 후의 시간 값을 측정하여 차이를 확인하고 Debugger가 존재하는 지 확인
악성코드에서 안티 디버깅으로 흔히 사용된다.


 #include <windows.h>
 #include <stdio.h>
 #pragma comment(lib, "winmm.lib") 
 BOOL anti_debug(DWORD count1) 
 { 
 	DWORD count2; 
 	count2 = GetTickCount(); 
 	if ((count2-count1) > 0x10) { 
 		return 1; 
 	} 
 	return 0; 
 } 
 
 int main(int argc, char **argv) 
 { 
 	DWORD count1; 
 	count1 = GetTickCount(); 
 	if(anti_debug(count1)) 
 		printf("Debugger Detected\n"); 
 	else 
 		printf("No Debugger...\n"); 
 	return 0; 
 } 


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

HTTPS/SSL(TLS) 인증서
HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자이다.
HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고 받는 메시지를 감청하는 것이 매우 쉽다.
즉, HTTPS는 로그인을 위해서 서버로 비밀번호를 전송하거나,  중요한 기밀 문서를 열람하는 과정에서

악의적인 감청이나 데이터의 변조등이 방지를 위한 목적으로 사용된다.

암호화 방식은 RSA 2048 방식을 주로 사용하며 최근에는 더 강력한 암호화 방식인 ECC(Elliptic curve cryptography)를 사용한다.


1. HTTPS/SSL
HTTPS와 SSL를 같은 의미로 이해하고 있는 경우가 많다.
HTTPS는 SSL 프로토콜 상위의 프로토콜이며 HTTPS는 SSL을 포함한다.

2. SSL/TLS
네스케이프에 의해서 SSL이 발명되었다.
이것이 점차 사용되다가 표준화 기구인 IETF의 관리로 변경되면서 TLS라는 이름으로 바뀌었다.
TLS 1.0은 SSL 3.0을 계승한다.
TLS라는 이름보다 SSL이라는 이름을 많이 사용하며 병행해서 사용하기도 한다.

3. SSL 디지털 인증서
SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다.
클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다.
클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다.
SSL과 SSL 디지털 인증서를 이용했을 때의 이점은 아래와 같다.
 1) 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
 2) 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.
 3) 통신 내용의 악의적인 변경을 방지할 수 있다.


아래사이트에 자세하게 정리되어 있다.

https://opentutorials.org/course/228/4894


아래사이트에서 웹서버의 SSL 안전도를 테스트할 수 있다.

https://www.ssllabs.com/


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

[VPN] 터널링  (0) 2016.08.09
Tcpdump usage examples  (0) 2016.04.26
Next Squence Number  (0) 2016.03.24
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
API BASED ANTI-DEBUGGING
IsDebuggerPresent
CheckRemoteDebuggerPresent
OutputDebugString
FindWindow
Registry Key
NtQueryInformationProcess (ProcessDebugPort)
NtSetInformationThread Debugger Detaching
Self Debugging with DebugActiveProcess
NtQueryInformationProcess (ProcessDebugObjectHandle)
OllyDbg OutputDebugString() Format String
SeDebugPrivilege OpenProcess
OllyDbg OpenProcess String Detection
OllyDbg Filename Format String

 

DIRECT PROCESS AND THREAD BLOCK DETECTIONS

IsDebuggerPresent Direct PEB
IsDebuggerPresent Set/Check
NtGlobalFlag
Vista TEB System DLL Pointer
PEB ProcessHeap Flag Debugger
LDR_Module

 

HARDWARE AND REGISTER BASED DETECTION

Hardware Breakpoints
VMware LDT Register Detection
VMware STR Register Detection

 

TIMING BASED DETECTIONS

RDTSC
NTQueryPerformanceCounter
GetTickCount
timeGetTime

 

MODIFIED CODE DETECTION

CRC Checking

 

EXCEPTION BASED DETECTION

INT 3 Exception (0XCC)
INT 2D (Kernel Debugger Interrupt)
ICE Breakpoint
Single Step Detection
Unhandled Exception Filter
CloseHandle
Control-C Vectored Exception
Prefix Handling
CMPXCHG8B and LOCK
OllyDbg Memory Breakpoint
VMware Magic Port
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

START CMD

ex)

dir /ah

attrib test.exe -s -h -r (속성해제)
del test.exe /f (삭제) 

ASSOC          파일 확장명 연결을 보여주거나 수정
ATTRIB         파일 속성을 표시하거나 변경
BREAK          확장된 CTRL+C 검사를 설정하거나 삭제
BCDEDIT        부팅 로딩을 제어하기 위해 부팅 데이터베이스에서 속성을 설정
CACLS          파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정
CALL           한 일괄 프로그램에서 다른 일괄 프로그램을 호출
CD             현재 디렉터리 이름을 보여주거나 변경
CHCP           활성화된 코드 페이지의 번호를 표시하거나 설정
CHDIR          현재 디렉터리 이름을 보여주거나 변경
CHKDSK         디스크를 검사하고 상태 보고서를 표시
CHKNTFS        부팅하는 동안 디스크 확인을 화면에 표시하거나 변경
CLS            화면을 지운다.
CMD            Windows 명령 인터프리터의 새 인스턴스를 시작
COLOR          콘솔의 기본색과 배경색을 설정
COMP           두 개 또는 여러 개의 파일을 비교
COMPACT        NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경
CONVERT        FAT 볼륨을 NTFS로 변환합니다. 현재 드라이브는 변환
COPY           하나 이상의 파일을 다른 위치로 복사
DATE           날짜를 보여주거나 설정
DEL            하나 이상의 파일을 지운다.
DIR            디렉터리에 있는 파일과 하위 디렉터리 목록을 보여준다.
DISKPART       디스크 파티션 속성을 표시하거나 구성
DOSKEY         명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만든다.
DRIVERQUERY    현재 장치 드라이버 상태와 속성을 표시
ECHO           메시지를 표시하거나 ECHO를 켜거나 끈다.
ENDLOCAL       배치 파일에서 환경 변경의 지역화를 끝낸다.
ERASE          하나 이상의 파일을 지운다.
EXIT           CMD.EXE 프로그램(명령 인터프리터)을 종료
FC             두 파일 또는 파일 집합을 비교하여 다른 점을 표시
FIND           파일에서 텍스트 문자열을 검색
FINDSTR        파일에서 문자열을 검색
FOR            파일 집합의 각 파일에 대해 지정된 명령을 실행
FORMAT         Windows에서 사용할 디스크를 포맷
FSUTIL         파일 시스템 속성을 표시하거나 구성
FTYPE          파일 확장명 연결에 사용되는 파일 형식을 표시하거나 수정
GOTO           Windows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진 줄로 이동
GPRESULT       컴퓨터 또는 사용자에 대한 그룹 정책 정보를 표시
GRAFTABL       Windows가 그래픽 모드에서 확장 문자 세트를 표시
HELP           Windows 명령에 대한 도움말 정보를 제공
ICACLS         파일과 디렉터리에 대한 ACL을 표시, 수정, 백업 또는 복원
IF             일괄 프로그램에서 조건 처리를 수행
LABEL          디스크의 볼륨 이름을 만들거나, 바꾸거나, 지운다.
MD             디렉터리를 생성
MKDIR          디렉터리를 생성
MKLINK         바로 가기 링크와 하드 링크를 생성
MODE           시스템 장치를 구성
MORE           출력을 한번에 한 화면씩 표시
MOVE           하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 이동
OPENFILES      파일 공유에서 원격 사용자에 의해 열린 파일을 표시
PATH           실행 파일의 찾기 경로를 표시하거나 설정
PAUSE          배치 파일의 처리를 일시 중단하고 메시지를 표시
POPD           PUSHD에 의해 저장된 현재 디렉터리의 이전 값을 복원
PRINT          텍스트 파일을 인쇄
PROMPT         Windows 명령 프롬프트를 변경
PUSHD          현재 디렉터리를 저장한 다음 변경
RD             디렉터리를 제거
RECOVER        불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구
REM            배치 파일 또는 CONFIG.SYS에 주석을 기록
REN            파일 이름 변경
RENAME         파일 이름 변경
REPLACE        파일 변경
RMDIR          디렉터리 제거
ROBOCOPY       파일과 디렉터리 트리를 복사할 수 있는 고급 유틸리티
SET            Windows 환경 변수를 표시, 설정 또는 제거
SETLOCAL       배치 파일에서 환경 변경의 지역화를 시작
SC             서비스(백그라운드 프로세스)를 표시하거나 구성
SCHTASKS       컴퓨터에서 실행할 명령과 프로그램을 예약
SHIFT          배치 파일에서 바꿀 수 있는 매개 변수의 위치 변경
SHUTDOWN       컴퓨터의 로컬 또는 원격 종료를 허용
SORT           입력을 정렬
START          지정한 프로그램이나 명령을 실행할 별도의 창을 시작
SUBST          경로를 드라이브 문자에 연결
SYSTEMINFO     컴퓨터별 속성과 구성을 표시
TASKLIST       서비스를 포함하여 현재 실행 중인 모든 작업을 표시
TASKKILL       실행 중인 프로세스나 응용 프로그램을 중단
TIME           시스템 시간을 표시하거나 설정
TITLE          CMD.EXE 세션에 대한 창 제목을 설정
TREE           드라이브 또는 경로의 디렉터리 구조를 그래픽으로 표시
TYPE           텍스트 파일의 내용을 표시
VER            Windows 버전을 표시
VERIFY         파일이 디스크에 올바로 기록되었는지 검증할지 여부를 지정
VOL            디스크 볼륨 레이블과 일련 번호를 표시
XCOPY          파일과 디렉터리 트리를 복사
WMIC           대화형 명령 셸 내의 WMI 정보를 표시


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

Windbg 사용  (0) 2016.06.23
WebDAV에서 사용하는 메소드  (0) 2016.06.21
윈도우 보안 이벤트 // IIS 로그 분석  (0) 2016.06.21
윈도우 디버깅 툴  (0) 2016.04.07
SET-환경변수확인  (0) 2016.03.30
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

W32.Madangel

W32.Madangel은 감염형 악성코드(웜)이다.

실행되면 다음과 같은 작업을 수행한다.

%Windir%\rundl132.exe //자기복사(W32.Madangel) %Windir%\Logo1_.exe //자기복사(W32.Madangel) %Windir%\vDll.dll //다운로드더 생성

참고:
%CurrentFolder% 악성코드가 실행된 디렉토리의 환경변수
%System% 시스템 디렉토리의 환경변수
C:\Windows\System (Windows 95/98/Me)
C:\Winnt\System32 (Windows NT/2000)
C:\Windows\System32 (Windows XP)

아래 레지스트리의 서브키를 체크하고 존재하면 프로세스를 종료한다.
HKEY_LOCAL_MACHINE\SOFTWARE\Soft\DownloadWWW
"auto" = "1"

iexplorer.exe 또는 explorer.exe에 vDll.dll을 인젝션한다.

vDll.dll은 다음 url에서 파일 다운로드를 시도한다.
hxxp://www.wowchian.com/dl[랜덤한 문자 2자리]

C to Y 드라이브까지 모든 드라이브의 실행파일을 찾아서 감염시킨다.
웜은 감염을 시도한 디렉토리에_desktop.ini 파일을 숨김속성으로 생성하고 시스템 설정 속성 및 웜이 실행 된 날짜를 저장한다.

다음과 같은 이름을 가진 디렉토리내의 파일들은 감염시키지 않는다.

system
system32
windows
Documents and Settings
System Volume Information
Recycled
winnt
Program Files
Windows NT
WindowsUpdate
Windows Media Player
Outlook Express
Internet Explorer
ComPlus Applications
NetMeeting
Common Files
Messenger
Microsoft Office
InstallShield Installation Information
MSN
Microsoft Frontpage
Movie Maker
MSN Gaming Zone

다음 IP주소로 "Hello,World" 문자열을 포함한 ICMP 패킷을 보낼 수 있다.

192.168.0.30
192.168.8.1


또한, 감염된 컴퓨터의 IP주소와 동일한 범위의 IP주소로 ICMP 패킷을 전송할 수 있다.
PC가 ICMP에 응답하는 경우 기본 공유폴더에 접근 시도를 한다.
\\ipc$
\\admin$

프로세스는 로컬 네트워크에있는 모든 컴퓨터와 공유 폴더를 접근 시도를 한다.
사용자계정과 암호를 사용하지 않거나 암호를 사용하지 않는 계정의 공유폴더를 열었을 경우
공유폴더에 존재하는 모든.exe파일을 감염시킨다



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

GenPack:Trojan.Generic  (0) 2016.06.21
CryptXXX Decryptor  (0) 2016.06.21
Malware Classification  (0) 2016.06.21
Hosts 변조  (0) 2016.06.20
Anti-AV 센스  (0) 2016.06.20
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

윈도우 디버깅 툴

agestore.exe - 마지막 접근 날짜를 근거로 파일을 삭제하는 유용한 파일 삭제 유틸리티
cdb.exe - 콘솔 기반의 유저 모드 디버거. NTSD와 거의 유사
dbengprx.exe - 서로 다른 두 머신 간에 데이터를 중계해주는 간단한 프록시 서버
dbgrpc.exe - 마이크로소프트 원격 프로시저 호출(RPC) 정보를 쿼리하고 표시
dbgsrv.exe - 원격 디버깅용으로 사용되는 프로세스 서버
dumpchk.exe - 메모리 덤프 파일의 유효성을 검사
 gflags.exe - 시스템 조율을 활성화하고 비활성화하는 구성 설정
kd.exe - 커널 모드 디버거
kdbgctrl.exe - 커널 모드 디버거 연결을 제어하고 설정
kdsrv.exe - 커널 모드 디버깅 동안에 사용되는 연결 서버
kill.exe - 프로세스를 종료(콘솔기반)
logger.exe - 함수 호출 같은 프로세스의 행위를 기록
lgviewer.exe - logger.exe 가 생성한 로그 파일뷰어
ntsd.exe - 콘솔 기반의 유저 모드 디버거. CDB와 유사
remote - 콘솔 프로그램을 원격으로 제어하는 툴
rtlist.exe - 원격 프로세스 리스트 뷰어
symchk.exe - 심볼 파일의 유효성을 확인하고 심볼 서버에서 심볼 파일을 받는다.
symstore.exe - 심볼 저장소를 생성하고 관리
tlist.exe - 모든 실행 프로세스를 목록화
umdh.exe - 메모리 누수 탐지에 사용
windbg.exe -  GUI를 제공하는 유저 모드와 커널 모드 디버거
심볼패키지 http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx

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

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

악성코드에 자주 사용되는 API 함수


DLL Injection에서 사용되는 API //특정 프로세스에 DLL Injection 실행
OpenProcess  
VirtualAllocEx
WriteProcessMemory
LoadLibraryA
GetProcAddress
CreateRemoteThread

Resource 섹션에 있는 리소스 사용 API //Resource 섹션에 암호화된 데이터를 해제하여 메모리에 기록
LoadResource  
SizeofResource
LockResource
FreeResource
FindResourceA

특정 파일 이름 확인 //특정한 이름의 파일을 읽고, 생성하고, 기록하고, 복사
WriteFile   
lstrcmpiA
ReadFile
DeleteFileA
CreateFileA
CopyFileA
CreateProcessA
FindFirstFileA

레지스트리에 관련 API //레지스트리에 특정한 키의 생성과 삭제가 이루어짐
RegSetValueExA  
RegEnumValueA
RegDeleteKeyA
RegCreateKeyExA
OpenProcessToken

암호화와 관련된 API //Resource 섹션에 암호화된 데이터를 해제하여 어딘가에 기록
CryptCreateHash
CryptHashData
CryptGetHashParam
CryptAcquireContextA


-------------------------------------------------------------------------------------------------------

File 관련 API
WriteFile  
ReadFile
CreateFile
CopyFile
MoveFile

Thread 관련 API
LoadLibrary 
CreateThread
ResumeThread
CreateRemoteThread

로깅 관련 API
Mouse_event 
Keybd_event
GetAsyncKeyState

Internet 관련 API
internetWriteFile
InternetConnect  

네트워크 관련 API
WSAStartup  
Gethostbyname
Gethostbyaddr
Socket
Send Recv
Inet_addr

FTP 관련 API
FtpOpenFile
FtpGetFileSize

기타 API 함수 목록
CreateMutex
capCreateCaptureWindows
ClientToScreen


메모리 관련 함수
VirtualAlloc() //가상 메모리 할당
VirtualFree() //가상 메모리 해제
VirtualProtect() // 메모리 보호 설정 값 변경



-------------------------------------------------------------------------------------------------------

GetModuleFileName
- 현재 실행되고 있는 위치 구한다.


GetKeyboardType
- 현재 키보드 타입을 구한다.


GetLocaleinfo
- 현재 설정되어 있는 국가/지역에 대한 정보를 구한다.

CreateFile
- 핸들값 반환 받는다.


WriteFile
- 핸들 값 받아서 파일을 쓴다. //CreateFile로 반환받은 핸들값을 통해 파일을 쓴다.(파일 수정/변조 등)


SetFileAttributes
- 파일의 속성을 바꾼다.

GetTempPathA
- 경로 탐색 API


CreateFileA
- 파일 생성 API


Shellexecute

WinExec
- 생성 파일 실행 센스 API

GetStartupInfoA
GetModuleHandleA
- 파일의 위치를 구할 때 사용


RegopenKeyExA
- 레지스트리를 열어볼 때 사용

CopyFileA
- 파일을 폴더로 복사시키는 역활

CreateServiceA
- 서비스등록


CreateProcessA
- Cmd로 자가 삭제


FindResourceA
- 리소스 찾기


SizeofResource
- 크기검색


SizeofResource
- 첫 바이트 획득


-------------------------------------------------------------------------------------------------------


VMWARE
- magic_num : VMXh


VirtualBox
- \\\.\\VBoxMiniRdrDn
- VboxHook.dll


GetLogicalDrives

- 드라이브 찾기


GetDiskFreeSpaceExW

- 용량 정보를 가져온다. (VM의 경우 보통 20G)


-------------------------------------------------------------------------------------------------------

GetTickCount()
DWORD GetTickCount(VOID); // OS 부팅 후 msec(1/1000초) 단위로 시간을 돌려주는 함수
윈도우즈가 부팅된 후 1초에 1000씩 틱 카운트를 증가 시킨다.
카운트는 32비트값이므로 최대 49.7일간의 카운트를 유지할 수 있다.
특정 루틴 시작 전과 후의 시간 값을 측정하여 차이를 확인하고 Debugger가 존재하는 지 확인 .(SUB 명령어를 통해 비교)


-------------------------------------------------------------------------------------------------------

참고
malloc()의 경우 할당할 수 있는 메모리블럭의 크기에는 한계가 있다.(약 256MB)
(new, delete연산자도 결국 malloc(), free()를 호출해서 메모리를 잡고 풀어준다. 결국 new나 malloc()나 같다.)
VirtualAlloc()함수는 대용량의 메모리를 다룰때 사용한다.
윈95/98 기준으로 프로세스는 4기가 주소공간을 할당 받는다.
이중 실제 응용프로그램이 사용 가능한건 2GB이며, 주소공간은 단지 주소공간일뿐 실제 물리메모리에 로드되는건 아니다.
커밋을 시켜야 물리메모리에 해당 주소공간에 할당된다.
VirtualAlloc() 으로 메모리를 할당-사용-해제하는 절차는 아래와 같다.
  1) 프로세스 주소공간 내에 일정주소공간 예약(Reserve). (이 주소공간은 다른 할당루틴이 사용불가능)
  2) 해당 주소공간중 실제 사용할 부분에 물리적 메모리(보조기억장치, RAM 등...)를 매핑(Commit)
  3) Commit된 부분에 대하여 메모리 사용(Commit되지 않은 부분을 사용하면 페이지폴트 발생)
  4) 주소공간에 매핑된 물리적 메모리를 해제(Decommit), 이때 데이터는 소멸된다.
  5) 할당했던 주소공간 해제(Release). 이제 이 주소공간은 다른 할당루틴이 사용가능
Commit된 영역의 데이터에 대한 캐싱은 시스템에서 한다. 캐싱을 못하게도 할 수도 있다.
malloc()으로 할당한 블럭은 페이지 단위로 나뉘고, 실제 페이지가 사용되는 시점에 해당 페이지가 자동으로 Commit 된다.
만약 RAM의 용량을 넘어서는 페이지들이 사용되면 적절한 페이지들이 보조기억장치(하드디스크의 가상메모리)로 페이지아웃
그리고 Free()를 호출하면 연쇄적으로 Decommit, Release 된다.


추가 확인------------------------------------------------------------------------------------------------

GetFileAttributesW
NtCreateFile
GetFileType
SetFilePointer
NtWriteFile
GetFileAttributesW
SetFileAttributesW





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

DWORD WINAPI GetEnvironmentVariable( __in LPCTSTR lpName, //환경변수이름 __out LPTSTR lpBuffer, //환경변수를 담을 버퍼, null-terminating 문자를 포함 최대 "32,767"의 크기 제한이 있다. __in DWORD nSize );


시스템 환경 변수 위치
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\control\session Manager\Enviroment


사용자 환경 변수 위치
HKEY_CURRENT_USER\Environment


환경변수 가져오기
int nSize = ::GetEnvironmentVariable("TEMP", NULL, NULL);
TCHAR* buffer = new TCHAR[nSize +1];
GetEnvironmentVariable("TEMP",buffer, nSize);
// 만약 버퍼의 크기가 변수의 크기보다 작다면 0이 리턴 되므로 버퍼의 크기를 nSize만큼 얻어와야 한다.


환경변수 설정하기
SetEnvironmentVariable("TEMP", "C:\\tmp");


환경변수 지우기

SetEnvironmentVariable("TEMP", NULL);


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

참고 : https://webnet77.net/cgi-bin/helpers/base-64.pl


Python 2.7 code

# -*- coding: utf-8 -*-
import sys,base64

if len(sys.argv) is 2:
  print >> sys.stderr, 'e.g) base64.py c:\test\base64.txt c:\test\base64'
  exit(1)

fname = sys.argv[1]
zname = sys.argv[2]

FH = open(fname, 'rb')
zname = str(zname)+".exe"

try:
	s = FH.read()
	dec = base64.b64decode(s)
	FZ = open(zname, 'wb')
	FZ.write(dec)
	FH.close()
	FZ.close() 
except IOError:
	print >> sys.stderr, 'error'


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

[Python] wmi  (0) 2016.08.10
[Python] with, seek, tell  (0) 2016.08.03
Python 리스트(배열)  (0) 2016.07.05
Python Random 함수  (0) 2016.07.05

+ Recent posts