'작업공간'에 해당되는 글 49건

  1. 2012/05/07 GDB Intel Achi 보는 방법
  2. 2012/04/06 CAP 파일 분석 시스템 (7)
  3. 2012/02/16 Port Scan
  4. 2012/02/09 디렉토리 리스팅으로 발견한 페이지 (1)
  5. 2012/02/06 [펌]GetPC
  6. 2012/01/31 Snort 룰 설명
  7. 2012/01/26 SQL 인젝션 취약점 (5)
  8. 2012/01/09 휘슬(WHISTL) 2탄~ (5)
  9. 2011/12/29 패킷에서 파일 추출하기 - 2 (2)
  10. 2011/12/29 Unpack
2012/05/07 16:06

자꾸 까먹어서 큰일..


set disassembly-flavor intel

저작자 표시 비영리 변경 금지

'작업공간 > Reverse' 카테고리의 다른 글

GDB Intel Achi 보는 방법  (0) 2012/05/07
[펌]GetPC  (0) 2012/02/06
Unpack  (0) 2011/12/29
코어덤프 확인 및 생성방법  (2) 2011/06/20
gdb 단축키  (0) 2011/06/02
Dump to Proccess Memory  (0) 2011/04/12
Posted by Sun2Day
2012/04/06 15:48

네트워크 회사에 있다보니 CAP 파일이 굉장히 중요하다.

근데 CAP 파일 분석툴이 없다.

좀 더 정확히 이야기 하면 "CAP 파일 내부의 어떤 코드가 취약하고 어떤 악성코드가 심어졌고.." 라는 것을 의미한다.

"그걸 분석해서 뭐하려고?" 라고 이야기 할지는 모르겠지만

EXE 분석툴, SWF 분석툴.. 등 다양한 포멧을 분석할 수 있는 툴들이 많다.

하지만 왜 CAP 파일 분석툴은 없을까.. 라고 고민하게되었고 설계하고자 한다.

일단 CAP 파일을 분석하려면 아래와 같은 조건이 선행되어야 한다고 생각한다.


1. 세션별 트래픽 분류

2. 데이터 값에 대한 File format 확인 (파일종류 확인)

3. 다양한 취약점에 대한 이해

4. 결과값들의 연관관계


사실 정확히 이야기 하면 CAP 파일 분석툴은 필요가 없다.

해당 컴퓨터 내부에서 프로그램으로 동작하면 되는것이 아닌가..

하지만.. 내 실력이 미천하여.. CAP 파일을 생성한 이후, 그 CAP 파일을 분석하는 형태로 구성을 계획중이다.

해당 툴이 완성되면 아래와 같은 Flow로 분석을 진행할 예정이다.


ex) "취약점분석시스템"이란 제작할 툴을 이용하여 만들 시스템으로 웹서버로 URL을 받아들여 분석하는 시스템이다.

1. 보안관제 혹은 보안에 관심있는 사람들이 "취약점분석시스템"에 접근하여 URL을 입력한다.

2. 입력된 URL은 내부에 있는 가상머신을 통해 접근하게되며, 접근할 때 네트워크 트래픽을 덤프한다. (CAP)

3. 약 20초간 딜레이 -> CAP 파일 백업 -> Snapshot 복원

4. 생성된 CAP 파일을 분석툴을 이용하여 분석한다.

5. 분석툴은 내부적으로 알려진 취약점 및 악성코드, 경유지, 유포지 등을 수집/분석한다.

6. 수집/분석 된 결과를 "취약점분석시스템"에 보여준다.



이로 인해 예상되는 이익은 아래와 같다.

1. 분석시스템의 자동화로 인해 업무효율 상승

2. 신종 공격 발견 시간 단축

3. 악성파일 및 악성스크립트 수집

4. 알려진 공격과 알려지지 않은 신종공격에 대해 실시간으로 구별가능.

5. 샘플에 대한 처리률 상승


만들고는 있는데.. 언제쯤 완성될런지는..

일단 담주 금요일까지 완성을 목표로.~



저작자 표시 비영리 변경 금지

'작업공간 > Network' 카테고리의 다른 글

CAP 파일 분석 시스템  (7) 2012/04/06
Port Scan  (0) 2012/02/16
Snort 룰 설명  (0) 2012/01/31
패킷에서 파일 추출하기 - 2  (2) 2011/12/29
[펌] OSI 7Layer  (0) 2011/06/12
Packet에서 File 추출하는 방법  (3) 2011/01/17
Posted by Sun2Day
2012/02/16 16:52
http://midnightresearch.com/wiki/index.php/Port_Scan

위 링크를 따라가면 다양한 스캐닝 공격에 대해서 설명이 되어있다.
Seq 0 ACK 1 일 경우도.. 스캐닝 공격인듯!!

해당 패턴으로 탐지로직을 만들어봤더니..

NSA에서 스캔 중 -_-;; 뭐지.. 왠 미국 정부에서 우리나라 IP를 스캔하고 있는지 잘 모르겠다 -_-;

저작자 표시 비영리 변경 금지

'작업공간 > Network' 카테고리의 다른 글

CAP 파일 분석 시스템  (7) 2012/04/06
Port Scan  (0) 2012/02/16
Snort 룰 설명  (0) 2012/01/31
패킷에서 파일 추출하기 - 2  (2) 2011/12/29
[펌] OSI 7Layer  (0) 2011/06/12
Packet에서 File 추출하는 방법  (3) 2011/01/17
Posted by Sun2Day
2012/02/09 11:53
점검 중..
스팸메일이 오는 것으로 추정되는 메일서버 발견..

차단하기전에 정말 악성서버인지 파악하기 위해 들어갔는데..
디렉토리 리스팅이 되네..?

가볍게 돌아보는데.. 음..??


CVS 서버라... -_-ㅋ;;

해당 CVS 서버에는 접속이 되지 않았다.
스팸메일서버인지 점검하러 갔다가 얻어걸린 것..

CVS서버인데 패스워드가 1111이 뭐니..!!

개발자의 보안인식이 중요하고.. 암호화가 역시 중요하다..
하지만 뭐.. 보안이라는게 사람들에게 중요시 인식되기 시작한지 얼마 안되서..

예전 프로그램들은 취약점들이 많을 듯.....


저작자 표시 비영리 변경 금지

'작업공간 > Web' 카테고리의 다른 글

디렉토리 리스팅으로 발견한 페이지  (1) 2012/02/09
SQL 인젝션 취약점  (5) 2012/01/26
휘슬(WHISTL) 2탄~  (5) 2012/01/09
TOP 100 Shells  (0) 2011/07/06
Web Hacking Inspection Security Tool  (4) 2011/01/07
Posted by Sun2Day
2012/02/06 11:11
http://skypher.com/wiki/index.php/Hacking/Shellcode/GetPC

GetPC (get Program Counter, also known as GetEIP on x86) code is code that determines its own location in a process' address space. It is commonly used in code that needs to reference itself, for instance in self-decoding and self-modifying code.

CALL GetPC

The easiest way to implement GetPC code on x86 is using the CALL instruction, like so:

$+0: E8 00000000 CALL $+5  ; PUSH $+5 onto the stack $+5: 59 POP ECX  ; ECX = $+5 $+6: ...shellcode...

Because the argument to the CALL instruction is the offset of the code to call, in this case 0, this code contains null bytes. Unfortunately, it is often not possible or practical to inject null bytes into a target process during exploitation. A common trick to get around this is to make the CALL point to a lower address address, making the offset negative, like so:

$+0     EB XX       JMP     SHORT $+N   ; Jump to the call instruction
$+5:    59          POP     ECX         ; ECX = $+N+5
$+6:    ...shellcode...
$+N:    E8 FFFFFFXX CALL    $+5         ; PUSH $+N+5 onto the stack and jump back to $+5

As you can see, this code is null free but this code has two drawbacks:

  1. It is 2 bytes larger than the first example.
  2. The shellcode between the POP and CALL instruction can only be 126 bytes, if you need more room, you will have to jump over the call and put the remainder after it.

There is a second trick to get around these two problems:

$+0 EB FFFFFFFF CALL $+4  ; PUSH $+5 onto the stack and jump to $+4 $+5: C8 59XX XX ENTER XX59,XX  ; Does not get executed like this; see below.

When this code executes, the CALL will jump to the last byte of its own instruction. The code executed after the CALL will therefore be:

$+4: FFC8 DEC ECX  ; Does nothing useful; can be considered a NOP. $+6: 59 POP ECX  ; ECX = $+5 $+7: ...shellcode...

The above code is only 1 byte larger than the first GetPC and puts no constraints of the shellcode following it.

FSTENV GetPC

[todo:References]

A way to retrieve the value of EIP on x86 systems is to use the x87 FSTENV instruction to store the state of the x87 floating point chip after issuing a FLDZ instruction. The structure store in memory by FSTENV will then contain the address of the FLDZ instruction at offset 0x0C of the structure:

$+0 D9EE FLDZ  ; Floating point stores $+0 in its environment $+2 D974E4 F4 FSTENV SS:[ESP-0xC]  ; Save environment at ESP-0xC; now [ESP] = $+0 $+6 59 POP ECX  ; ECX = $+0

This method is also null free and uses the same amount of bytes as the last CALL example.

SEH GetPC

[todo:References]

A third way to write GetPC code is to use the Windows specific Structure Exception Handler (SEH). When an exception happens in a process on Windows, a structured exception is created by the operating system and passed to the first SEH handler to see if it can handle it. If not, the second SEH handler is asked, etc... if no SEH handler handles the exception, the program is terminated because of an unhandled exception. Whenever a structure exception handler is called, it is passed (pointers to) information about the exception on the stack. This information includes the address in memory of the instruction that caused the exception.

It is relatively simple to register a structured exception handler with the OS. If a shellcode can generate a small structured exception handler at a known location in memory and register it before causing an exception, this small structured exception handler would get executed. It could determine the address of the instruction that caused the exception and jump back to the next instruction (the one immediately following it). The code would then continue as normal, only now knowing exactly where it is.[todo:Write an example]

Because the SEH was abused heavily by exploits for various purposes, Microsoft has introduced additional checks on the SEH as mitigation against this abuse with each service pack of Windows XP. These have made writing working SEH GetPC increasingly harder. On Windows Vista, it seems these mitigation make it impractical of not impossible to write working SEH GetPC code. However, it is still possible to write SEH GetPC code on Windows XP sp3. It's even possible to do so using only alphanumeric instructions, which is used in ALPHA3 to create alphanumeric SEH GetPC code.



저작자 표시 비영리 변경 금지

'작업공간 > Reverse' 카테고리의 다른 글

GDB Intel Achi 보는 방법  (0) 2012/05/07
[펌]GetPC  (0) 2012/02/06
Unpack  (0) 2011/12/29
코어덤프 확인 및 생성방법  (2) 2011/06/20
gdb 단축키  (0) 2011/06/02
Dump to Proccess Memory  (0) 2011/04/12
Posted by Sun2Day
2012/01/31 15:04
Snort 룰 설명
저작자 표시 비영리 변경 금지

'작업공간 > Network' 카테고리의 다른 글

CAP 파일 분석 시스템  (7) 2012/04/06
Port Scan  (0) 2012/02/16
Snort 룰 설명  (0) 2012/01/31
패킷에서 파일 추출하기 - 2  (2) 2011/12/29
[펌] OSI 7Layer  (0) 2011/06/12
Packet에서 File 추출하는 방법  (3) 2011/01/17
Posted by Sun2Day
2012/01/26 14:12
특정 솔루션에 한해서 먹히긴하지만.......
SQL 인젝션.. 이라고 말하기도 부끄럽다..
아직도 이런게 먹힐 줄이야..

URI에 ' 도 없이 SQL 쿼리를 날렸는데.. 먹히네..

select * from usr

하하..

정리 좀 하고.. 나중에 공개~
우연하게 얻어걸리긴했지만.. 취약점 연구는 재밌는 것~
저작자 표시 비영리 변경 금지

'작업공간 > Web' 카테고리의 다른 글

디렉토리 리스팅으로 발견한 페이지  (1) 2012/02/09
SQL 인젝션 취약점  (5) 2012/01/26
휘슬(WHISTL) 2탄~  (5) 2012/01/09
TOP 100 Shells  (0) 2011/07/06
Web Hacking Inspection Security Tool  (4) 2011/01/07
Posted by Sun2Day
TAGSQL
2012/01/09 09:26
작년 1월 경, 휘슬 패턴을 추출한적이 있습니다.
지인이 해보라고 해서.. 했던거고.. 그땐 그걸 어떤식으로 사용할 수 있을지를 몰랐더랬죠..
1년이 지난 얼마전에 다시 한번 휘슬 패턴을 추출하였습니다.
역시.. 이번 추출도 공부 목적!!
(단, 저번에는 뚫는데 목적이 있었으나.. 이번엔 웹쉘 탐지패턴을 이해하고자 하는 바램에서.. ^^;)

근데 저번이랑 똑같은 프로그램인데도.. 작년이랑 틀리게.. 너무 쉽게 풀어버렸습니다;;
작년엔 왜 코드의 흐름을 그렇게 생각했을까요? ^^;;

암튼.. 아래가 휘슬 패턴의 일부분 입니다.


너무 작나요? ^^; 클릭하면 크게 보일지도 모르겠네요..

좌측이 작년버전.. 우측이 얼마전에 추출한 버전입니다.
뭔가 이상한게 보이시나요?

네. 패턴 넘버는 똑같은데 패턴이 조금 변경된 것들이 다수 있네요.
네. 패턴이 삭제된 것들이 있네요.
네. 패턴이 추가된 것들이 있네요.

홈페이지에도 패턴 업데이트 관련 공지사항이 없어 언제 업데이트가 된건진 모르겠으나..
업데이트가 되고있고
업데이트 시, 패턴 파일 전체가 업데이트 되는 듯 싶으며..
꾸준히 관리하면서 오탐나는 패턴은 수정/삭제가 이루어지는 듯한 모습이네요.

올해 추출한 패턴은 1144개.
구체적으로 추가/변경/삭제 된 패턴은 비교분석해봐야 알겠지만.. 이 또한 공부가 많이 되겠네요 ^^


저작자 표시 비영리 변경 금지

'작업공간 > Web' 카테고리의 다른 글

디렉토리 리스팅으로 발견한 페이지  (1) 2012/02/09
SQL 인젝션 취약점  (5) 2012/01/26
휘슬(WHISTL) 2탄~  (5) 2012/01/09
TOP 100 Shells  (0) 2011/07/06
Web Hacking Inspection Security Tool  (4) 2011/01/07
Posted by Sun2Day
2011/12/29 11:25
저번에는 수작업을 통해 파일을 추출하는 방식을 썼었습니다..
근데 알고보니.. 그 기능은 이미 Wireshark에서 지원되는 있는 기능이더라고요..

그래서 오늘은 간략하게 Wirtrshark로 파일을 추출하는 것을 써볼까 합니다.

일단 Wireshark로 cap파일을 Open 합니다.
이후 아래 그림처럼 File -> Export -> Objects -> HTTP 선택합니다.


선택하면 아래와 같은 창이 뜨는데 원하는 파일을 선택하고 우측 하단에 Save As 를 클릭하시면 됩니다.


어때요~ 쉽죠? ^^;




저작자 표시 비영리 변경 금지

'작업공간 > Network' 카테고리의 다른 글

CAP 파일 분석 시스템  (7) 2012/04/06
Port Scan  (0) 2012/02/16
Snort 룰 설명  (0) 2012/01/31
패킷에서 파일 추출하기 - 2  (2) 2011/12/29
[펌] OSI 7Layer  (0) 2011/06/12
Packet에서 File 추출하는 방법  (3) 2011/01/17
Posted by Sun2Day
2011/12/29 11:10
마땅한 샘플을 못찾아서..
글로만 설명하는 아주 지루한 시간이 되겠습니다.

저도 잘 못풀긴 하지만..
디버거를 자주 사용하지 않았던.. 사람들은 저보고 어떻게 푸냐고 묻습니다.

제가 푸는 방식은.. 순전히 제 경험에 의해 만들어진 것이기 때문에.. 설명드리기가 생각보다 쉽지 않습니다.
설명을 못한다는 것은 결과적으로 제가 모르는 것이기 때문에 다른 사람에게 설명을 할 수 있게끔 고민을 했었고..
그 방법을 설명을 해줬으나.. 제가 너무 어렵게 이야기 하는건지..
물어봤던 사람들이 디버깅에 관심이 없어서 못하는건지.. 다들 못하시더라고요 ^^;

일단!! 제가 설명해주는 Unpack을 하기 위해선.. 몇가지 선지식이 있어야 합니다.
1. Unpack 이란?
2. Unpack 원리
3. 일반적인 Stratup Code

이 정도 알면 많은 악성코드들을 Unpack 할 수 있을거 같네요. (그..그렇게 많이는 아닐지도요 ^^;)

방법은 아주 간단합니다.
1. OllyDBG 로 샘플을 Open 한다.
2. bp ExitProcess 또는 적절하게 코드가 다 풀릴때까지 실행한다.
3. 압축이 풀린 코드영역에서 일반적인 Startup Code에 자주 쓰이는 API를 검색한다.
4. Startup Code이기 때문에 그곳이 바로 Startup Function이며, 가장 상위에 있는 코드가 OEP일 것이다.

나머지는.. 심슨아저씨(Import REC)에게 부탁을 하거나 수작업으로 슥슥.. 처리해주시면 됩니다.

이 방식은.. 압축을 어떤 방식으로 했는지는 전혀 관계가 없는 방식입니다.
Unpack 코드를 확인하지 않기 때문에 어느정도 Hole 이 있는 방식이긴합니다.

하지만.. 쉽기 때문에.. 약간의 지식만 있다면 누구나 다 할 수 있는 방식이라고 생각하는데.. 아닌가요? ^^;




저작자 표시 비영리 변경 금지

'작업공간 > Reverse' 카테고리의 다른 글

GDB Intel Achi 보는 방법  (0) 2012/05/07
[펌]GetPC  (0) 2012/02/06
Unpack  (0) 2011/12/29
코어덤프 확인 및 생성방법  (2) 2011/06/20
gdb 단축키  (0) 2011/06/02
Dump to Proccess Memory  (0) 2011/04/12
Posted by Sun2Day