debug 모드와 release 모드의 바이너리를 둘다 가지고 있으면,
용량 비교만하면 되니 매우 간편 하지만, 하나만 가지고 있는 경우 정확히 알수가 없다.

이럴때 .net 컴파일러로 만들어 진 경우는 .net reflecter로 debugged 플래그가 있다고 한다.
http://blog.naver.com/PostView.nhn?blogId=techshare&logNo=100150127754
해당 내용은 이쪽을 참조하면되고,

나의 경우는 c++ 로 만들어진 바이너리 였기에 다른 방법이 필요했다.
그래서 로드되는 dll을 비교해보니 debug와 release 가 사용하는 msvcr이 다르다는 것을 확인하였다.

dependancy walker(http://www.dependencywalker.com/)로 로드되는 dll을 조사하여,

MSVCR90D.DLL
MFC90UD.DLL

가 포함되면 debug 빌드이다.
release 의 경우 D가 빠진

MSVCR90.DLL
MFC90U.DLL

이 로드된다. (뒤의 숫자는 빌드환경에 따라 달라질 수 있다.)

이올린에 북마크하기(0) 이올린에 추천하기(0)
2012/02/27 16:25 2012/02/27 16:25

보안솔루션 관점에서 이야기하는건 어짜피 병림픽이니, 제하고

외부 프로그램들은 항상 고정위치의 값을 변조하고나 읽어가서 악용하는 경우가 많다.

메모리풀을 만들때, 메쏘드에 얼록외에 추가로 보호얼록 같은걸 만들어서,
기존 풀의 랜덤한 영역에 할당해주는 것도 도움이 되지 않을까 싶다.
리눅스에는 os가 지원하는 기능으로 알고 있다.

추가로 변수 완전하게 추상화가 가능하면, 실제 저장 영역은 바이트 단위로 쪼개서 랜덤한 영역에 분포시키고, 오버라이드된 오퍼레이터 ( = ) 에서 합쳐서 돌려주는 식으로 구현하는 것도 괞찮을 듯 하다.

이올린에 북마크하기
2012/01/27 09:34 2012/01/27 09:34
memory read 방어 :: 2012/01/27 09:34 공부/etc

TCP는 신뢰성을 가진 통신 프로토콜이다.
이런 신뢰성 문제중에 하나가 Reordering이 있는데,
이는 패킷이 어떤 알수없는 사정에의해 순서가 뒤바껴서 온경우를 말한다.

자세히 설명하면
데이터를 전송혹은 다운로드 받을 때 ack가 고정이되고, seq를 통해서 현재 위치를 가늠하게 되는데,
이때 seq + len 으로 추정된 다음 seq의 패킷이 오지 않고, 다른 패킷이 왔을 때를 말한다.

크기 1 짜리 패킷 5개를 보냈을 때
1 -> 2 -> 3 -> 4 -> 5 이런식으로 seq를 확인하여 패킷을 합치면 된다.
1 -> 3 -> 2 -> 4 -> 5 로 왔을 때는?
이때 reordering이 발생하는데 WireShark에서는 TCP Out-of-Order라고 표시해준다.
TCP는 3이 도착했을 때 3이 현재 올바른 순서로 온것이 아닌 것으로 파악하고 ,
3을 버퍼에 쌓아둔다. 그리고 2가 도착했을 때 2를 사용하고, 버퍼에 쌓아둔 3을 사용하게 되는것.

이런 TCP Reordering은 보통 3개까지만 저장하되 이를 넘어가면
loss data로 간주하여 재전송을 요청하게 된다.

이올린에 북마크하기
2011/08/05 18:01 2011/08/05 18:01
  • SNMP Library Version Mismatch (5.3.1 vs 5.3.2.2)
    Net-Snmp 버전이 안맞는 경우로 Spine 최신버전을 깔거나(e버전), Net-Snmp를 5.3.1로 다운그래이드 한다.
  • configure: error: Cannot find SNMP header files under
    Spine을 컴파일 할 때 Net-snmp-devel이 설치 되어 있지 않으면 발생하는 에러, Net-snmp-devel을 깔자.
이올린에 북마크하기
2010/01/29 20:02 2010/01/29 20:02
############################# libol ################################

Installing:
 gcc                   i586        4.4.1-2.fc11            updates        8.8 M
Installing for dependencies:
 cloog-ppl             i586        0.15.7-1.fc11           updates         89 k
 glibc-devel           i586        2.10.1-5                updates        999 k
 glibc-headers         i586        2.10.1-5                updates        640 k
 kernel-headers        i586        2.6.30.9-96.fc11        updates        746 k
 ppl                   i586        0.10.2-7.fc11           updates        1.6 M
Updating for dependencies:
 cpp                   i586        4.4.1-2.fc11            updates        3.6 M
 glibc                 i686        2.10.1-5                updates        5.8 M
 glibc-common          i586        2.10.1-5                updates         23 M
 libgcc                i586        4.4.1-2.fc11            updates         98 k
 libgomp               i586        4.4.1-2.fc11            updates         85 k

Installing:
 gcc-c++                i586        4.4.1-2.fc11           updates        4.6 M
Installing for dependencies:
 libstdc++-devel        i586        4.4.1-2.fc11           updates        1.8 M
Updating for dependencies:
 libstdc++              i586        4.4.1-2.fc11           updates        326 k

############################## syslog ################################

Updating:
 glib2           i586           2.20.5-1.fc11           updates           1.5 M

Installing:
 glib2-devel         i586         2.20.5-1.fc11           updates         1.3 M

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig


페도라 코어에서 개발자 패키지를 빼고 설치 했을 때. syslog를 설치하기 위해 필요한 패키지 입니다.
이올린에 북마크하기
2009/11/13 02:56 2009/11/13 02:56


 

AnonimoSer Crack Me 무턱대고 시작하기
- reverseengineering 기초 -
- 리버스엔지니어링 기초 -



제가 맨땅에 헤딩 하던시절에 공부했던 방법을 토대로 작성한 문서입니다.
시작 계기는 중요한 다짐에 의해서였지만, 약속을 지키지 못하고 다른 것에 심취했다가, 이제서야 완성시켰네요.
문서의 마지막 부분에도 적어 놨듯이, 좀 많이 부끄러운 물건이기에, 아무 권리도 주장하지 않습니다.
누군가에게 도움이 되었으면 좋겠습니다.

요즘엔 Packing도 고도화 되고, 가상화 등 여러 방어장치가 많습니다.
그리고 툴도 OPCODE로 소스를 만들어 주거나, 스크립트를 접목해주는 등 많은 발전이 있었습니다.

해당문서로 도달할 수 있는 범위는 매우 얕은 지식이지만
중도에 포기하지않고 흥미를 얻는쪽으로 도움이 되길 바랍니다.
이 문서는 아니더라도 참고문서는 필독입니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/09/22 15:53 2009/09/22 15:53

HackJam을 둘러보다가 SSH패킷이 잔뜩 나오는 문제가 있었는데,
문득 난 스니핑을 할줄 알지만 SSH Stream이 나오면 아무것도 못하잖아! 라는 걸 깨닿고, 얘를 어떻게 하면 까볼 수 있을까 하고 노력을 하고 있음.

보통 SSH는 비대칭키를 이용해서 대칭키를 교환하는데 이로써 제 3자는 대칭키를 얻을 수 없게 되어 스니핑한 것을 복호화 할 수 없게 된다라는 스토리.

하지만 만약 내가 타깃의 컴퓨터의 쉘을 갖고 있다면? 서버가 아니라 내가 클라이언트일때 분명 어딘가에 대칭키를 가지고 있을 터인데, 현재 Putty같은 것으로 통신을 해보면 로그인 전에 비대칭키를 저장할거냐는 메세지가 나온다.

사용자 삽입 이미지
>>1

여기서 공개키라는 것은 결국 비대칭키중에 클라이언트가 대칭키를 만들어서 보낼 때 암호화하는 키를 뜻하겠죠?
서버는 그걸 자신의 개인키로 복호화 할테고, 이러면 양자가 모두 대칭키를 갖게되고 통신이 시작!
그렇다면 클라이언트가 생성한 대칭키는 어디에 있을까.

>>2

완전히 잘 못 알았다. 우선 추천 링크는 이쪽
http://www.ibm.com/developerworks/kr/l ··· eyc.html (새 창으로 열기) 
무려 젠투리눅스 창시자가 쓴 글이다. ssh가 어떻게 작동하는지 알 수 있다.
우선은 기본통신은 비대칭키로 끝난다. 서버는 공개키를 나눠줄 뿐 그이상의 교환은 없다. 왜냐면 자신만 개인키로 복호화 화면 되기 때문에? 공개키는 얻기 쉽겠지만 결국 사용자가 입력하는 중요한 내용들은 내부분 볼수 없게 된다. 가 골자인것 같다.

추가적인 키교환은 패스워드 없이 서버에 로그인하도록 비밀키를 만드는 것.
그런데 아직도 이론이 머릿속에 가지런히 정리가 안된다.

>>3

찾아볼수록 더 혼돈... 뭐가 맞는건지 =_=
http://blog.naver.com/minminmang?redir ··· 70959010 (새 창으로 열기)

>>4
첫번째 생각이 맞다고 잠정 결론
두번째 글에서 언급하는 비밀키는 인증용키라고 생각

<<

레지스트리에 저장된 Putty의 공개키는 얻을 수 있는데 이번의 경우에 제 레지스트리에 들어간 내용은 아래와 같습니다.

0x23,0xab7b65d7e62df09c49e5d6ab6094ae4ea57065dcdc0263010d771628f4677b7fc04711d7c0cb9b9acb20604c615e
51ae5f38b283bfe49dea5371fdecfc63a77a2e5838bed441c79aa07b6b48faa91a8fb83e39c4b3b4eac794414f10dfddd

193자리이다. 위에서는 ssh-rsa 1024 어쩌고 저쩌고 하였는데, 그러면 키 길이가 1024인게 아니었던 것인가?!
앞에 0x23은 또 뭐지? 혼돈의 도가니탕이다.

단순히 내가 이해할 수 잇는 키값이 보였다면 이를 통해서 캡쳐한 ssh의 키교환 패킷에 있는 암호화된 대칭키를 복호화 해서 그 대칭키로 ssh stream를 까 볼수 있다고 생각했는데... 넘사벽이군.

아무래도 헬프를 외쳐야 할 듯 하다. 누구에게 물어보지 - _-;

검색하면서 ettercap이란 툴도 알게 되었는데 이는 ssh1.5의 경우엔 자동으로 복호화를 해주기까지 한단다. ssh1.5의 경우 Bruteforce로 15분만에 키를 알아낼수 있다고 하기때문에, 이를 이용해 클라이언트의 패킷을 변조하여 ssh1.5를 강제로 사용하게 하고 스니핑을 하는 자동화도 가능하다니 꽤 무서운 툴이 되겠다.




이올린에 북마크하기
2009/09/21 18:06 2009/09/21 18:06
TraceRoute 명령. 자주 써 봐서 어떤 명령인지는 잘 알고 있지만, 동작원리가 무엇인지는 관심을 가져보지 않았는데,
기회가 되서 TraceRoute의 동작 원리와 2가지 종류에 대해서 공부를 하게 되었습니다.

우선 간단하게

UNIX기반의 traceroute 명령은 UDP패킷으로 경로를 탐색합니다.
WIndows 기반의 tracert 명령은 ICMP패킷으로 경로를 탐색합니다.

하지만 결과적으로 UNIX의 traceroute에서도 UDP패킷을 송신한 결과로 Reply 받는 것은 ICMP 패킷입니다.
TTL을 원하는 Route의 홉수 만큼만 설정하고 송신을 하면 TTL이 0이 되는 순간 해당 Route는 ICMP 패킷으로 Time Exceed 신호를 Reply 하기 때문이죠. 이런식으로 TTL을 1 부터 하나하나 늘려나가면서 경로를 탐색하게 됩니다.

yahoo의 경우 ping을 막아 두지 않았고, naver의 경우는 막아 두었는데.
결과만 놓고 볼때 naver는 ICMP를 막아 두었기 때문에 UDP를 쓰던 ICMP를 쓰던 똑같이 최종 Route는 알아내지 못합니다.

왜 둘은 이런 차이를 갖게 되었을까? 라고 생각해 봤지만 딱히 팍하고 떠오르는 것은 없고,
단지 ICMP로 모든것을 해결하는 Tracert쪽이 UDP와 ICMP를 섞어쓰는 traceroute보다 합리적이라는 생각은 듭니다.
이올린에 북마크하기
2009/09/21 15:52 2009/09/21 15:52
TraceRoute :: 2009/09/21 15:52 공부/etc
가끔 AVA나 Mabinogi같은 게임을 노트북으로 돌리는데, 이게 무선랜으로 돌리면 항상 1분간격으로 극심한 렉이 발생한다. 처음에는 lg070에서 공짜로준 무선공유기가 문제거니 생각했는데, 공유기에서 나온 유선랜을 노트북에 연결해도 이 현상이 사라지는 것을 발견했다.


사용자 삽입 이미지

그래서 검색해보니 이 vista os가 무선랜이 활성화 되어있을 때는 1분주기로 주위의 AP 정보를 한번씩 싹~ 가져온다는 것이다. 덕분에 그 1분간격에 한번씩 무선랜이 매우 느려지는 현상이 발생하게 된다고 한다.

찾아보니 이것을 방지해주는 프로그램이 있었는데 일명 Vista-anti-lag 이라고 한다.
독일에서 만든 프로그램인데 아래의 링크를 따라가면 다운로드 받을수 있다.

http://www.codecase.de/de/software/dow ··· anti-lag (새 창으로 열기)

현재 1.1.1 버전이고 install 버전과 단독실행버전 두개를 배포하고있다.
install버전은 시작시 자동실행하게끔 해주는것 같고 단독실행버전은 게임할때만 실행시켜서 써주면 되겠다.
실행하면 아래의 화면이 나타나는데 오른쪽의 Active VAL을 클릭하면 활성화되게 된다. 아마도 AP검색을 못하게 막는것 같다.


사용자 삽입 이미지

그럼 모두 즐겜레이션(...)
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/07/11 11:28 2009/07/11 11:28
openclose