블로그 이미지
Jack2
http://jack2.codebreaking.org (2012.11.10 ~ )

calendar

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
2014.03.23 07:00 Basic Theory/Term

메시지가 공격자가 포획한 노드를 지나가게 되면
공격자는 이 메시지를 도청, 위조 또는 삭제함으로써
중요한 메시지의 내용을 가져가거나 메시지를 제대로 전달하지 못하게 하여
네트워크에 심각한 피해를 줄 수 있다.


출처 : 무선 센서 네트워크에서 웜홀 공격 방어기법의 에너지 효율향상을 위한 TTL 결정 기법

'Basic Theory > Term' 카테고리의 다른 글

웜홀 공격(Worm hole)이란?  (0) 2014.03.23
위치 독립 코드(position independent code)란?  (0) 2013.02.27
디렉토리 스트림(directory stream)이란?  (0) 2012.09.24
컴퓨터 리소스(Resource)란?  (0) 2012.08.07
DNS resolver  (0) 2012.07.25
Race Condition(경쟁 상태란?)  (0) 2012.07.25
posted by Jack2
2013.02.27 06:00 Basic Theory/Term

임의의 주소에 로드 가능한 코드. 

데이터 액세스나 점프는 상대 주소로 수행한다.



[출처] 재철꾸러기의 초심으로 대동단결

[상세 내용] 위키백과
[관련 자료]
1. Binary Hacks - 공유라이브러리에 PIC 를 사용하는 이유
2.
Position Independent Code


'Basic Theory > Term' 카테고리의 다른 글

웜홀 공격(Worm hole)이란?  (0) 2014.03.23
위치 독립 코드(position independent code)란?  (0) 2013.02.27
디렉토리 스트림(directory stream)이란?  (0) 2012.09.24
컴퓨터 리소스(Resource)란?  (0) 2012.08.07
DNS resolver  (0) 2012.07.25
Race Condition(경쟁 상태란?)  (0) 2012.07.25
posted by Jack2
2012.10.18 07:00 Basic Theory

여러 분야의 블로그 글을 인터넷 뿐만 아니라 스마트폰에서도 보는 편이라면 

RSS Feed 를 이용하는 분들이 많을 것이다. 

Twitter 에서 좋은 정보를 올리는 분들의 글을 실시간으로 확인을 못하거나 Twitter 를 사용하지 않는 경우라도 RSS Feed 를 통해 Twitter 의 정보를 받아 볼 수 있었다.


그런데 얼마전 부터 RSS Feed 가 정상적으로 이루어 지지 않는 것이 발견되었다.


기존의 RSS Feed 주소의 형식은 아래와 같았다. (twitterapi => 사용자계정명)

http://twitter.com/statuses/user_timeline/twitterapi.rss


하지만 아래 그림과 같이 웹 페이지를 찾을 수 없다는 오류가 발생한다. 그래서 RSS Feed 가 정상적으로 이루어지지 않았다.



관련 문제를 구글 검색을 통하여 해결 할 수 있어서 혹시라도 같은 증상(?)을 갖고 있는 분들을 위해 해결책을 정리해서 올리게 되었다.





RSS Feed 를 위한 새로운 주소는 다음과 같다.


https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=twitterapi


(twiiterapi => twitter 닉네임을 입력하면 완료)


posted by Jack2
2012.09.24 07:00 Basic Theory/Term

디렉토리 함수들은 dirent.h 헤더 파일에 선언되어 있다.

이들은 디렉토리 조작의 기반 수단으로 쓰이는 DIR 구조체를 사용한다.


이 구조체에 대한 포인터(DIR *)를 흔히 디렉토리 스트림(directory stream)이라고 부르는데, 이 디렉토리 스트림은 정규 파일 조작을 위한 파일 스트림(FILE *)과 상당히 비슷한 방식으로 쓰인다. 


디렉토리에 담긴 개별 항목에 해당하는 구조체는 dirent로, 역시 dirent.h에 선언되어 있다. 디렉토리 항목을 위한 구조체가 따로 존재하는 이유는, 프로그램에서 DIR 구조체의 필드들을 직접 변경할 수가 없기 때문이다.


출처 : Beginning Linux Programming 4th edition



'Basic Theory > Term' 카테고리의 다른 글

웜홀 공격(Worm hole)이란?  (0) 2014.03.23
위치 독립 코드(position independent code)란?  (0) 2013.02.27
디렉토리 스트림(directory stream)이란?  (0) 2012.09.24
컴퓨터 리소스(Resource)란?  (0) 2012.08.07
DNS resolver  (0) 2012.07.25
Race Condition(경쟁 상태란?)  (0) 2012.07.25
posted by Jack2
2012.08.09 07:00 Basic Theory/Linux

현재 리눅스/유닉스(Linux/Unix) 를 다루어 본 적이 있는 분들이라면 알고 있을 내용이지만


'심벌릭링크(Symbolic Link)가 뭔가요? 먹는건가요?' 라고 고개를 갸우뚱 거릴수 있는 분들

윈도우(Windows)를 사용하는 대부분의 일반 PC유저들은

심벌릭 링크 = '바로가기' 라고 생각하면 쉬울 것이다. 


여기서 산넘어 산으로 '바로가기'라는 단어를 모르는 분들이 있을 수 있다.


그 분들을 위해 '바로가기' 에 대해 간단한 설명을 해보자.

바탕화면에 임의의 아이콘(아이콘명이 Jack2 라고 하자)을 선택한 뒤 마우스 오른쪽 버튼을 클릭하면 '바로가기 만들기(S)' 이런 메뉴를 볼 수 있다. 





이 메뉴를 선택하면 'Jack2의 바로가기'라는 단축아이콘이 생성된다. 이 단축아이콘이 바로 '바로가기' 파일인 것이다.





원래 C:\ 에서 부터 폴더를 타고타고 들어가서 해당 경로의 파일을 실행해야 되는 수고를 

바탕화면에서 그 파일을 바로 실행할 수 있게 되는 것이다. 우리가 윈도우 바탕화면에서 사용하고 있는 웹브라우저(Chrome, Firefox, IE 등) 아이콘이 대표적인 예라고 할 수 있다.


이처럼 '바로가기' 단축아이콘을 심벌릭(소프트) 링크라고 생각하면 쉽게 이해할 수 있을 것이다.


이제 어떤 개념인지 전체적인 큰 그림은 본 상태이니 

리눅스 환경에서 사용하는 심벌릭 링크에 대해서 이야기 해보려고 한다.


Symbolic Link Example)

Fedora release 13 (Goddard)

Kernel 2.6.34.9-69.fc13.i686 on an i686 (3)

login: jack2

Password:

Last login: Wed Aug  8 02:13:00 from 192.168.40.1


[jack2@localhost ~]$ cd test

=> 홈 아래에 있는 test 로 이동을 합니다.


[jack2@localhost test]$ ls -l ./symsym2

-rwxrwxr-x. 1 jack2 jack2 4681 Aug  8 03:25 ./symsym2

=> test 안에 symsym2 라는 실행파일을 확인 할 수 있었습니다. 

(참고로 symsym2 는 제가 테스트 용도로 작성한 파일입니다.)


[jack2@localhost test]$ ./symsym2

Symbolic Link 가 정상적으로 동작합니다.

=> symsym2 파일을 실행하면 Symbolic Link 가 정상적으로 동작합니다. 라는 문구가 출력됩니다.


[jack2@localhost test]$ pwd

/home/jack2/test

[jack2@localhost test]$ cd ~

[jack2@localhost ~]$ pwd

/home/jack2

=> 현재 작업경로를 /home/jack2 로 이동했습니다.

 

[jack2@localhost ~]$ ln -s /home/jack2/test/symsym2 SymTestOK

=> ln 명령어와 -s 옵션을 이용해서 심벌릭링크를 걸어주었습니다.

원본파일은 /home/jack2/symsym2 이고 링크된 파일은 SymTestOK 


[jack2@localhost ~]$ ls -l SymTestOK

lrwxrwxrwx. 1 jack2 jack2 24 Aug  8 03:31 SymTestOK -> /home/jack2/test/symsym2

=> 확인한 결과 정상적으로 링크가 된 것을 확인 할 수 있었습니다.

[jack2@localhost ~]$ ./SymTestOK

Symbolic Link 가 정상적으로 동작합니다.

=> 실제 실행한 결과 symsym2가 동작하는 것을 확인할 수 있었습니다.

이처럼 심벌릭링크를 이용하면 파일을 접근할 때 Full-Path를 찾아가는 일 없어지겠죠? 윈도우의 '바로가기' 단축아이콘에 빗댄 이유도 이해가 되시죠?


Symbolic link는 위와 같이 매우 편리하게 이용할 수 있으나, 위험성을 많이 내포하고 있다. 유닉스에 존재하는 일반적인 버그에 수시로 나타나는 것이 바로 이 Symbolic link인데, 왜 그런지 그 이유를 살펴보도록 한다.


예를 들어서, 어떤 프로그램이 hello라는 파일을 열어서, 그곳에 무언가를 써준다고 가정한다. 이때 만약 당신이 Permission이 된다면, hello라는 파일을 지우고나서, symbolic link로 'ln -s ~xxx/.rhosts hello' 라고 해두면 어떻게 되겠는가? 그 프로그램이 실행되면 hello라는 파일을 여는데, hello는 ~xxx/.rhosts라는 파일에 링크되어 있으므로, 그 프로그램은 ~xxx/.rhosts를 열어서 쓰게 된다. (물론 잘만 프로그램을 짜면 그런 일을 없앨 수 있다.)


이러한 단적인 예제가 elm 에 존재하는 autoreply라는 버그였는데, 그것은 setuid root되어 있고, /tmp에 arep.???? 라는 666 mode의 파일을 생성한다. 그러면, 그 생성되는 파일을 없애고(unlink), symbolic link를 /.rhosts(root의 .rhosts)로 연결시켜버린다. 그러면 실행하면서 /.rhosts라는 파일에 "+ +"정도가 들어가게 하기만 하면, 만사 OK(or BAD?)가 된다.


'Basic Theory > Linux' 카테고리의 다른 글

심벌릭 링크(Symbolic/Soft Link)란?  (0) 2012.08.09
[Linux] VM ware에 설치된 Fedora13 에 Telnet 으로 접속하기  (0) 2012.07.18
setUID란?  (0) 2012.06.26
posted by Jack2
2012.08.07 07:00 Basic Theory/Term

일반적으로 리소스(Resource)란, 사용될 수 있는 어떤 항목을 말한다. 프린터나 디스크 드라이브와 같은 장치들이 리소스가 될 수 있으며, 메모리도 마찬가지이다.


마이크로소프트 윈도우나 매킨토시와 같은 많은 운영체제에서, 리소스라는 용어는 특히 프로그램들이 활용할 수 있는 데이터나 루틴들을 가리킨다. 이런 것들을 다른 말로는 시스템 리소스라고도 부른다. 커다란 시스템의 일부를 이루는 하드웨어, 소프트웨어, 또는 데이터의 한 구성요소를 말한다. 


예를 들어, 네트웍 리소스는 네트웍 상에서 활용 가능한 서버나 프린터 등을 지칭한다. 소프트웨어 리소스에는 프로그램, 유틸리티, 또는 심지어 프로그램 내의 작은 구성요소를 지칭할 수 있다. 데이터 리소스는 액세스 할 수 있는 파일이나 데이터베이스 등이 포함된다.


[출처] 텀즈

posted by Jack2
2012.07.25 15:33 Basic Theory/Term

resolver(리졸버)는 DNS를 이용하는 클라이언트(PC)를 말한다.


리졸버의 역할은?

: 네임서버(Nameserver)로 원하는 호스트(Host)에 대한 쿼리(Query)를 보내고 네임서버로 받은 응답을 해석하고 정보를 요구한 클라이언트에 정보를 전달한다. => 인터넷 상의(외부) 도메인의 이름풀이를 제공하는 것이 주 목적이다.


리졸버의 설정은?

: /etc/resolv.conf 파일에서 이루어진다.

domain 지시자, search 지시자, nameserver 지시자, sortlist 지시자, 그리고 option 이라는 다섯 개의 지시자를 resolv.conf 파일에서 이용할 수 있다.



명심해야 할 중요한 사항

: 내부 사용자는 DNS advertiser를 사용하여 이름풀이를 사용할 수 없고, 외부 사용자들은 이름풀이를 위해 내부 DNS Resolver를 사용해서는 안된다. 물론 예외 사항은 VPN 네트워크에 관련된 경우다.

posted by Jack2
2012.07.25 07:00 Basic Theory/Term

Race 라는 단어를 보자마자 '경쟁'이라는 의미가 떠오르지 않는다. 단어만 놓고보면 '달린다'라는 의미가 생각난다. 그런데 다르게 생각해 보면 마라톤이나 자동차 경주에서 Race 라는 용어를 사용한다. 그리고 Race를 통하여 1등을 향한 경쟁을 하고 결과에 대한 순위를 정하게 된다.


컴퓨터공학에서 사용(이야기)하는 Race Condition(경쟁 상태)란?

=> 한정된 자원을 동시에 이용하려는 여러 프로세스가 동시에 접근을 시도하는 상태를 말한다. 동시에 접근할 때 자료의 일관성을 해치는 결과가 나타날 수 있다. 이를 방지하기 위해서는 프로세스 협력 기법이 필요하다.

경쟁 상태는 때로 입력값 간에 충돌을 일으켰을 때 논리 회로에서도 발생할 수 있다.



[출처] : 텀즈,  위키피디아

[참조] : [NH-mailing] 레이스 컨디션, Race Condition을 이용한 Exploit


posted by Jack2
2012.07.18 07:00 Basic Theory/Linux

Ubuntu 를 사용할 때 처럼 단순하게 해당 ip를 확인한 다음에 putty 로 접속을 시도해보았다.


[jack2@localhost ~]$ ifconfig 

eth1      Link encap:Ethernet  HWaddr 00:0C:29:86:79:50  

          inet addr:192.168.40.130  Bcast:192.168.40.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe86:7950/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:321 errors:0 dropped:0 overruns:0 frame:0

          TX packets:272 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:196513 (191.9 KiB)  TX bytes:23023 (22.4 KiB)

          Interrupt:18 Base address:0x1424 


lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:8 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:480 (480.0 b)  TX bytes:480 (480.0 b)


하지만 결과는 Fail... 어떻게 해야 되나 싶어서 멍때리다가 VMware Fedora local 상에서 


[jack2@localhost ~]$ telnet 192.168.40.130

Command not found. 

 * Cancelling.. The transaction failed: internal-error, The backend exited unexpectedly. This is a serious error as the spawned backend did not complete the pending transaction.

=> 결과는 Command not found 즉, 명령어를 찾을 수 없다는 ... ㅎㄷㄷ

이제 처음부터 telnet-server를 설치하기로 했다.

1. 일단 root 권한으로 
[jack2@localhost ~]$ su root
Password: 

2. yum 을 이용해서 telnet-server 를 install
[root@localhost jack2]# yum -y install telnet-server
Loaded plugins: presto, refresh-packagekit
Setting up Install Process
Resolving Dependencies
--> Running transaction check
...
...
Dependency Installed:
  xinetd.i686 2:2.3.14-33.fc13                                                  

Complete!

3. telnet-server 가 설치 완료되었으니 다음으로는 telnet-server를 설정하기
[root@localhost jack2]# vi /etc/xinetd.d/telnet 
# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = yes      //<= 처음 설치시 다음과 같이 default 값으로 disable 되어있다.
     // yes 를 no 로 바꾸어 준다.
}

4.변경된 설정을 적용하기 위해 xinetd를 restart
[root@localhost jack2]# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

5. 방화벽에서 해당 포트(23번 포트)를 열어준다.
[root@localhost jack2]# system-config-firewall

이 명령어를 입력하면 'Firewall Configuration'을 확인할 수 있다.
여기에서 Other Ports > Add > 23 | tcp | telnet 을 선택 > Apply

6. 이제 정상적으로 telnet이 되는지 PuTTY 에서 확인
Fedora release 13 (Goddard)
Kernel 2.6.34.9-69.fc13.i686 on an i686 (2)
login: jack2
Password:
[jack2@localhost ~]$
=> Success, 드디어 PuTTY 로 작업이 가능한 상태가 되었다!!

p.s. 모든 설치와 설정후에 local(VM ware상에 있는 Fedora13)에서 telnet 접속을 시도하면
[jack2@localhost ~]$ telnet 192.168.40.130
Command not found. Install package 'telnet' to provide command 'telnet'? [N/y] 
=> 이와 같은 문구를 확인할 수 있다. 현재는 telnet-server 만 설치한 상태이기 때문이다. local 에서 telnet을 이용하려면 이와 같은 문구를 본 뒤 y 를 입력하면 간단하게 설치할 수 있다.







'Basic Theory > Linux' 카테고리의 다른 글

심벌릭 링크(Symbolic/Soft Link)란?  (0) 2012.08.09
[Linux] VM ware에 설치된 Fedora13 에 Telnet 으로 접속하기  (0) 2012.07.18
setUID란?  (0) 2012.06.26
posted by Jack2
2012.07.16 16:44 Basic Theory/Term

스택 영역(stack segment)은 아주 잠깐 사용하고 삭제할 데이터를 저장하는 공간이다. 잊어버리지 않게 금방 사용하고 버리는 '일회용품'이라고 기억하고 있으면 좋을 것 같다.



좀더 구체적으로 이야기하면 함수 호출과 관련된 정보들이 위치하게 되는 영역이다.

함수의 인자들, 리턴 어드레스, 그리고 함수 내에서 사용되는 지역 변수(매개변수)이 바로 이 곳에 저장된다. 그리고 그 외에도 몇 가지 값들이 스택 영역에 저장되어 있는데, 대표적인 예가 쉘의 환경변수(environment) 값이다.


이러한 값들은 모두 버퍼 오버플로우 공격과 밀접한 관계를 가지고 있는 것들이기 때문에, 우리가 가장 큰 관심을 갖고 들여다 봐야 할 영역이다.


그리고 스택 세그먼트(SS) 레지스터는 스택 세그먼트의 주소를 포함한다.


[출처] : 해커스쿨Rude's Factory고양이손님


'Basic Theory > Term' 카테고리의 다른 글

DNS resolver  (0) 2012.07.25
Race Condition(경쟁 상태란?)  (0) 2012.07.25
메모리(Memory)영역 - 스택영역(stack segment)  (0) 2012.07.16
가상 메모리(virtual memory)  (0) 2012.07.16
메모리(Memory)영역 - 코드영역(code segment)  (0) 2012.07.04
Console(콘솔)  (0) 2012.06.22
posted by Jack2
prev 1 2 3 next