itkorea 인천 아카데미 클라우드 정보보안 수업 자료 및 정리
2024-11-25~2025-05-13
정식 수업~
매주 월화수목금 9시30분-6시30분까지 과정
아 중간에....
글 날라감..
.
.
.
다시 쓰자......
어제 계정과 권한에서 umask값이 022세자리가 기본인데
왜 umask 치면 0022가 나올까?
리눅스 특수 접근 권한 설명
사용자 권한
-권한을 크게 일반권한과 특수 권한으로 나눔
-일반권한->chmod 777 파일명/폴더명 형식으로 3자리 숫자로 지정 가능
-특수권한은 chmod 4777파일명/폴더명 형식으로 4자리 숫자로 지정가능 예) 1777sticky bit, 2777 setgid. 6777 (setgid+setuid) 등
1234567
소유자 그룹 기타
rwx rwx rwx
------- --------- --------
2^2 2^1 2^1
4 2 1
퍼미션앞에 숫자가 붙는거임
4xxx 4는 4천번대 who? 누구든지 이 파일이나 폴더에 권한을 소유자 권한으로 실행한다는뜻
요걸 SetUID라고 함
2xxx 2천번대 who? 누구든지 이 파일이나 폴더에 권한을 그룹 권한으로 실행한다는뜻
요걸 SetGID라고 함
1xxx 1천번대 who? 누구든지 이 파일이나 폴더의 권한을 사용할때 삭제를 제외한 나머지 모든 권한을 사용할 수 있다
요걸 sticky bit라고 함
setuid %파일의 실행 권한이 아니라 파일의 소유자 권한이된다%
[user1@localhost ch5}$
user1은 로그인 계정 (내가 로그인한 계정
localhost는 컴퓨터 이름
ch5 pwd는 내가 현재 작업하고 있는 위치
pwd(현재 위치만 보여주는거임 ㅇㅋ?) print working directory
pWd(/부터 다 보여주는거고)
@은 이메일 형식이라 생각하면됨
리눅스는 특수한 경우에만 파일 실행권한을 줌
그래서 파일 최대권한이 666인거임
user1에서
cd를 치거나 cd~쳐도 같은 명령어임
cd ~
cd
cd /home/user
다 같은 명령어에요~
리눅스는 시간이 세개있어요
c타임 create 만들어진 시간 (파일이 만들어진 시간)
m타임 modify 변경된 시간 (파일이 수정된 시간)
a타임 access 접근한 시간 (파일에 누가 접근한 시간)
보안에서 제일 중요한건 a타입이지!, 그래서 그걸로 동기화 시키고가는거임
갔다왔는데 시간이 바껴져있다? 그럼 누군가 접근한거지?
그럼 그때 로그인 누가했는지 추적들어가는거임 ㅇㅋ?
시간 동기화 할때 쓰는게 touch 보안에 중요한 명령어
왜 아무 내용없는 파일을 만들까? 형식적인거지
c타임이랑m타임이랑 기본으로 동작하는거임
포렌식하면 최초의 시간을 찾을 수 있는데 m타임이 들어가있다? 그럼 위조 됐다는거임
캡쳐 날라가서 글로 대체
[user1@R91-03 ~]$ chmod 4755 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwsr-xr-x. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ ^C
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwsr-xr-x. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ chmod 2755 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwxr-sr-x. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ chmod 1755 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwxr-xr-t. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ chmod 4777 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwsrwxrwx. 1 user1 user1 0 12월 10 09:44 set.exe
s나 t 가 있으면 특수 권한 들어간거임
t는 파일을 수정할 수 있음 삭제는 못해
삭제는 원래 소유자만 할 수 있어
t는 무지막지한거지!
1000번이라고 권한이 낮다는 말이아님
which 명령어
명령어 파일의 위치를 알려주는거임~!
빨간거는 4천번대 (소유자 특수권한이라는거임)
그래서 이거 파일 실행하면 누구나 root 권한이 되는거임
$passwd 명령어를 주고
p- 입력하는 동안 # root권한 되는거임
r- 입력하는 동안 # root권한 되는거임
이후 입력 다하면
$ 다시 달러로 돌아옴
그 사이에만 루트가 되는거임
그래서 해커들이 저 사이 루트 권한 일때 도망가는거임(0.5초의 그 찰나의 순간에 도망가는겅미)
하지만 우리는 그정도 실력이 안되는거임
그래서 저 사이에는 절대 다른게 나오면 안되는거임 passwd 에서 -p -r 만 하게 해야하는거임
ifconfig ens160 입력하면 내 랜카드 정보가 나오는데
만약 내가 이걸 해킹하고싶어 그래서 ifconfig 명령어 파일을 해킹할꺼임 권한을.
ifconfig 명령어 파일 경로랑 권한 확인해보자
[user1@R91-03 ~]$ ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.33 netmask 255.255.255.0 broadcast 192.168.10.255
ether 00:0c:29:c0:94:27 txqueuelen 1000 (Ethernet)
RX packets 52491 bytes 74254009 (70.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14485 bytes 1004576 (981.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[user1@R91-03 ~]$ which ifconfig
/usr/sbin/ifconfig
[user1@R91-03 ~]$ ls -l /usr/sbin/ifconfig
-rwxr-xr-x. 1 root root 80872 11월 5 08:00 /usr/sbin/ifconfig
sbin 폴더에 있죠? 그럼 root만 사용가능하다는 소리에요
ifconfig 유저는 사용못하는 명령어라는거에요
유저 명령어들은 bin 폴더 밑에 있어요
근데 왜 ifconfig는 유저가 쓸 수 있지?
심지어 권한도 -rwxr-xr-x인데??
user1 ll /
lrwxrwxrwx. 1 root root 8 11월 3 10:29 sbin -> usr/sbin
[user1@R91-03 ~]$ cd /sbin
[user1@R91-03 sbin]$ ll
sbin은 실질적으로 root만 사용하는 명령어지만 user1의 최상위 경로에서 권한을 확인해보면
sbin이 있음 그래서 거기 들어가서 ll확인해보면 사용가능한 명령어들 리스트가 보임
왜 이렇게 해놓았을까?
예를 들어 passwd 했을때, 다음 라인으로 넘어가지? 그게 setuid 설정되었다는거임
ifconfig하면 바로 실행되고 명령어가 끝나버림 (root권한이 찰나의 시간인거임)
근데 passwd 하면 그 다음라인으로 넘어감(-p -r 입력하라고 그때 root 권한쓰라는거임)
근데 이게 위험함, 어쩔수가없음 근데, 비밀번호 입력하라는 관리자를 1000명 둘 수 없으니까
그래서 특별한 경우 아닌 이상 특수 퍼미션을 주면 안됨ㅇㅋ?
#루트
$사용자
Backdoor.c 파일에서 소스코드 변경할꺼임
cat /etc/passwd
user15:x:1015:1015::/home/user15:/bin/bash
setuid 1015
setgid 1015
우리가 backdoor.c 파일에서 만약에 소스코드를ㅎㄷ얏
#incldue <stdio.h>
main() {
setuid(0); --->(15) 로 바꾸면 user15로 바뀌는거임
setgid(0);--->(15) 로 바꾸면 user15로 바뀌는거임
system("/bin/bash")
}
실제로는 이파일은 과거에 해킹 너무 많이써서 저 명령어 못쓰게 막아났음 c언어에서
vibackdoor로 이용해서 vim으로 root권한 딸거임
요건 backdoor 만드는거랑 같은데 이제 system에서 쉘을 vi로 열게하는거임
가장 위험한 방법. 로그가 안뜨거든
나는 user5에 들어가서 하기
user5는 user1에 들어가서 하기
어 우연히 루트 계정 알았어 그래서 그 사람 계정 들어가서
대신 만들어준다는겅미
이거는 모니터링 추적이 안됨
파일명: vibackdoor.c
#include <stdio.h>
main(){
setuid(0);
setgid(0);
system("/bin/vi");
}
참고로 이거 윈도우에 복사하면 막아버려~
하고 ssh 192.168.10.35 에서 ll 확인 후
./backdoor하면 신기한 화면 뜸
그러면 vi가 열림, vi가 root권한으로 들어가진다는거임
user5가 vi를 실행했는데 root권한으로 들어가지죠?
거기서 이제 esc 누르고 shift 콜론 하고
밑에 입력창에서 !/bin/bash를 하면 root권한으로 바뀜
!하면 vi메모장에서 나는 루트 셀로 빠져나갈래 라는거임
리눅스는 명령어보다 옵션을 많이 알면 더 좋아요 그거 모르면 한땀한땀 개고생하는거임
그래서 root 권한따면 바로 cat /etc/shadow 확인하고
useradd korea7하고 passwd 만들고 passwd를 지워 backdoor 계정을
그러면 암호 없이 로그인 가능하니까
거기에 backdoor파일을 또 복사하는거지
more 명령어 이용해서 root권한 잠시 사용해서
/etc/shadow 파일 열수 있게하기
more은 파일을 페이지 단위로 보여주는거임
head tail less more 앞에서 밑으로 페이지 단위 보여주는거임
[root@R91-03 ~]# cd
[root@R91-03 ~]# ls
1203 1225 h user_perm1.txt 다운로드 사진
1204 anaconda-ks.cfg ip.txt useradd_auto.sh 문서 서식
1206 d ip2.txt userdel_auto.sh 바탕화면 음악
1209 ens160 nuclear 공개 비디오
[root@R91-03 ~]# wc anaconda-ks.cfg
45 99 1176 anaconda-ks.cfg
anaconda-ks.cfg[root@R91-03 ~]# cp anaconda-ks.cfg test.txt
[root@R91-03 ~]# ls
1203 1225 h test.txt 공개 비디오
1204 anaconda-ks.cfg ip.txt user_perm1.txt 다운로드 사진
1206 d ip2.txt useradd_auto.sh 문서 서식
1209 ens160 nuclear userdel_auto.sh 바탕화면 음악
[root@R91-03 ~]# head less tail more
more이용해서 backdoor 파일 만들꺼에요
more에다가 setui거니까 유저가 more /etc/shadow 하면
권한이 없어도 shadow 파일을 열수 있게됨
저렇게 몇몇 명령어들을 이용해서
root권한을 딸 수 있게끔 할 수 있음
거기에 tripwire이용해서 명령어들 보호막 주면
그게 막히는거지
tripwire는 백도어랑 바이러스 파일 다 초기화하고 탐지하는데
그 이후 잡히는거는 다 감지하는거지
root권한따는법 세개했는데
1. backdoor
2. more
3. vi
제일 위험한건 vi임 유저 뒤에서 작업하는거니까
추척이 user로 뜸
왜냐 로그는? 로그아웃해야 뜨는데
vi는 로그인이 되고 로그아웃이 되는게 아니니까
리눅스와 파이썬 연동으로 로그확인하는거 해보기
jupyter는 크롬으로 파이썬 사용할 수 있게 하는거임
https://www.python.org/
현재버전은 3.13.1는 32비트가 설치되서 이거 안할꺼임
3.13.1 64비트 다운받기
오후 네트워크 수업
후헤에에 선생님이 ripv1에서는 서브넷 동작안하는거 기억하시는지 우리 실험하실려고
올핑안되는 lab 주고 올핑 떨어뜨려라고했다 그래..이상했어..이상했다고..!
PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 10.1.2.3/24 10.1.2.254
PC4
ip 10.1.2.4/24 10.1.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254
R1
conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh
int s2/0
ip add 172.16.12.1 255.255.255.0
no sh
router rip
network 172.16.1.0
network 172.16.12.0
end
copy r start
R2
conf t
int e0/0
ip add 10.1.2.254 255.255.255.0
no sh
int s2/0
ip add 172.16.12.2 255.255.255.0
no sh
int s2/1
ip add 172.16.23.1 255.255.255.0
no sh
router rip
network 10.1.2.0
network 172.16.12.0
network 172.16.23.0
end
copy r start
R3
conf t
int s2/0
ip add 172.16.23.2 255.255.255.0
no sh
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh
router rip
network 172.16.23.0
network 172.16.3.0
end
copy r start
핑 원래 안가는거임
ripv1이라 서브네트워크를 지원안하니까
라우터의 서브넷 전송방식
1.classless : 클래스가 없다! 서브넷을 지원하는거
2. classful : 서브넷을 지원하지않고 기본 서브넷을 사용한다 (a=8비트 b=16비트 c= 24비트)
단일 네트워크를 하면 서브넷이 지원됐던거고
서로 다른 네트워크면 클래스풀이 작동하는거임
응 또 안돼 ㅋㅋㅋ
서브넷이 돼야해..
또 서브넷이 달라서 그런거야
sh ip ro protocols 하면 내가 사용하고있는 프로토콜을 보여줍니다
Routing Protocol is "application"
Routing Protocol is "rip"
Routing Protocol is "rip"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Sending updates every 30 seconds, next due in 28 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Redistributing: rip
Default version control: send version 1, receive any version
Interface Send Recv Triggered RIP Key-chain
Ethernet0/0 1 1 2
Serial2/0 1 1 2
r1이 다른 라우터들한테 30초동안 신호가 안들어오면
inavlid timer가 작동하고 invalid timer는 31초부터 시작함 180초동안
그 180초 안에 신호가 들어오면 오우 내 친구 하고 다시 rip시작.
하지만 180초 지났는데도 신호가 안들어오면? holddown 타이머가 시작하고
holddown은 180초 시작, 이러면 그때동안 다른 라우터들 신호는 안받음
무시함. 왜냐면 flsuhtimer가 작동해야하거든 flush timer=240초 그래서 holddown들어가면
무조건 테이블에서 지워짐
4분있다가 그래서 정확히 라우팅 테이블에서 삭제해버림
rip이 이렇게 뒤에서 작동함.
장애가 발생하는걸 체크하기위해서. 장애가 있다? 그 정보가 초기화되는시간이
4분! 240초
flush time 작동후 라우팅 테이블에서 삭제했어!
근데 이후에 다시 작동 신호가 들어온다? 그럼 다시 0로 시작
r3에서
sh ip ro 하면
R 172.16.1.0/24 [120/2] via 172.16.23.1, 00:00:25, Serial2/0
이걸 홉을 15로 바꿔버리면 r2이후로 r1이있는ㄱ지 다른게 있는지 인식을 못함
rip은 최대 15개 읽을 수 있으니까
나를 나갈때 +2를 하라고 원래는 1이니까 r2가 r1 정보가 되는거임
r1(config-router)# offset 1 out 2 s2/0
r3에서
sh ip ro 하면
R 172.16.1.0/24 [120/4] via 172.16.23.1, 00:00:10, Serial2/0
1+2+1 홉이 4로 바껴있습니다
모든 라우터에서
clear ip route * 해버리면 즉시 rip 관계를 끊고
새로 rip 관계를 형성한다
이 명령어는 타이머를 안기다려도된다고
4분까지 아무것도 못하고 기다려야하는데 clear ip route *하면
rip 4분을 안기다려도 된다고, 다 끊어버리고 새로 0부터 시작하는거임
4분간격으로 하나씩 다 죽는거임
네트워크를 잘못하면 우리동네랑 인접된 동네도 좀이따가 다 다운되는
문제가 발생하는거임! 네트워크 잘해야함!
RIP protocol debugging is on
R3# 내가 보내
*Dec 10 06:49:08.612: RIP: sending v1 update to 255.255.255.255 via Serial2/0 (172.16.23.2)
*Dec 10 06:49:08.612: RIP: build update entries
*Dec 10 06:49:08.612: subnet 172.16.3.0 metric 6
R3# 내가 받아
*Dec 10 06:49:12.107: RIP: received v1 update from 172.16.23.1 on Serial2/0
*Dec 10 06:49:12.107: 10.0.0.0 in 1 hops
*Dec 10 06:49:12.107: 172.16.1.0 in 4 hops
*Dec 10 06:49:12.107: 172.16.12.0 in 1 hops
다 보내는거임 나랑 연결된 모든 포트로 255.255.255.255로
끄고싶으면 no debug ip rip하면 돼요
그리고 debug ip rip으로 offset바꾼걸 확인해보기
근데 이건실무에서 사용x
그래서 노트나 블로그에 필기할때 와이어샤크가 필수!
udp는 한쪽만 있는거야, 대상이 없어, 누구든지 목적지가 없음
ripv1는 udp (userdategramprotocol)
ripv2는
ripv1끼리 통신하는게아니라 udp520번이 통신하는데 그게 ripv1이 라니느거임
모든 네트워크는 포트번호로 네트워크 통신하는거임 =udp 520
브로드캐스트고
tcp는 이제 로그인하고, 딱 맞춰서 봐야하고 지하철 가는데 할머니가 아무나
전단지 뿌려 broadcast임 근데 전단지를 젊은 여학생만줘 그럼 tcp
타켓이 정해져있다=tcp
telnet 와이샤크 캡쳐하기 저번에 했던거임
라우터에서 telnet할꺼면 필요한 것
1. ip주소
2. 텔넷 암호설정
3. 관리자 암호 설정
3개 다 맞아야함 하나만 안다고 못함
r1
conf t
enable password banana
line vty 0 4
password apple
login
transport input telnet
end
copy r start
r2
conf t
enable password banana
line vty 0 4
password apple
login
transport input telnet
end
copy r start
이후 r1에서
telnet 172.16.12.2
와이어 샤크 s1->s2 s2/0 포트 캡쳐해보기
b
a
n
n
a
\r\n
\r커서를 앞으로 보내는거임
\n은 엔터
왜냐면 보통 커서는 다음라인에서 맨앞으로 떨어지니까.
\r이 없으면 맨뒤에서 그래로 자리 떨어짐
ack가 응답받은거임 = okay~라는뜻
Posioning Reverse
오늘 메모한거
오전 9:18 2024-12-10
책받음~
어제 계정과 권한에서 umask값이 022세자리가 기본인데
왜 umask 치면 0022가 나왔을까요? 이제 배워봅시다~
리눅스 특수 접근 권한 설명
사용자 권한
-권한을 크게 일반권한과 특수 권한으로 나눔
-일반권한->chmod 777 파일명/폴더명 형식으로 3자리 숫자로 지정 가능
-특수권한은 chmod 4777파일명/폴더명 형식으로 4자리 숫자로 지정가능 예) 1777sticky bit, 2777 setgid. 6777 (setgid+setuid) 등
1234567
소유자 그룹 기타
rwx rwx rwx
------- --------- --------
2^2 2^1 2^1
4 2 1
퍼미션앞에 숫자가 붙는거임
4xxx 4는 4천번대 who? 누구든지 이 파일이나 폴더에 권한을 소유자 권한으로 실행한다는뜻
요걸 SetUID라고 함
2xxx 2천번대 who? 누구든지 이 파일이나 폴더에 권한을 그룹 권한으로 실행한다는뜻
요걸 SetGID라고 함
1xxx 1천번대 who? 누구든지 이 파일이나 폴더의 권한을 사용할때 삭제를 제외한 나머지 모든 권한을 사용할 수 있다
요걸 sticky bit라고 함
setuid %파일의 실행 권한이 아니라 파일의 소유자 권한이된다%
[user1@localhost ch5}$
user1은 로그인 계정 (내가 로그인한 계정
localhost는 컴퓨터 이름
ch5 pwd는 내가 현재 작업하고 있는 위치
pwd(현재 위치만 보여주는거임 ㅇㅋ?) print working directory
pWd(/부터 다 보여주는거고)
@은 이메일 형식이라 생각하면됨
리눅스는 특수한 경우에만 파일 실행권한을 줌
그래서 파일 최대권한이 666인거임
user1에서
cd를 치거나 cd~쳐도 같은 명령어임
cd ~
cd
cd /home/user
다 같은 명령어에요~
[user1@R91-03 /]$ cd
[user1@R91-03 ~]$ pwd
/home/user1
[user1@R91-03 ~]$ mkdir ch5
[user1@R91-03 ~]$ touch set.exe
[user1@R91-03 ~]$ ls
ch5 set.exe
[user1@R91-03 ~]$ chmod 755 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 root user3 6 12월 10 09:44 ch5
-rwxr-xr-x. 1 root user3 0 12월 10 09:44 set.exe
<권한설정><파일연관><소유자><그룹자><폴더만든시간>
1은 하나 열면 하나 연관된거 나만~
2는 하나 열면 두개~연관된거 열림
6이랑 9은 용량
리눅스는 시간이 세개있어요
c타임 create 만들어진 시간 (파일이 만들어진 시간)
m타임 modify 변경된 시간 (파일이 수정된 시간)
a타임 access 접근한 시간 (파일에 누가 접근한 시간)
보안에서 제일 중요한건 a타입이지!, 그래서 그걸로 동기화 시키고가는거임
갔다왔는데 시간이 바껴져있다? 그럼 누군가 접근한거지?
그럼 그때 로그인 누가했는지 추적들어가는거임 ㅇㅋ?
시간 동기화 할때 쓰는게 touch 보안에 중요한 명령어
왜 아무 내용없는 파일을 만들까? 형식적인거지
c타임이랑m타임이랑 기본으로 동작하는거임
포렌식하면 최초의 시간을 찾을 수 있는데 m타임이 들어가있다? 그럼 위조 됐다는거임
s나 t 가 있으면 특수 권한 들어간거임
[user1@R91-03 ~]$ chmod 4755 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwsr-xr-x. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ ^C
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwsr-xr-x. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ chmod 2755 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwxr-sr-x. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ chmod 1755 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwxr-xr-t. 1 user1 user1 0 12월 10 09:44 set.exe
[user1@R91-03 ~]$ chmod 4777 set.exe
[user1@R91-03 ~]$ ll
합계 0
drwxr-xr-x. 2 user1 user1 6 12월 10 09:44 ch5
-rwsrwxrwx. 1 user1 user1 0 12월 10 09:44 set.exe
t는 파일을 수정할 수 있음 삭제는 못해
삭제는 원래 소유자만 할 수 있어
t는 무지막지한거지!
1000번이라고 권한이 낮다는 말이아님
[user1@R91-03 ~]$ ls -l /etc/shadow
----------. 1 root root 3104 12월 5 13:45 /etc/shadow
아무도 권한 없!! 이걸 수정하는 명령어가 chage임
shadow파일은 처음부터 너무 소중해서 root로 사용권한 없게하는거임. 해킹방지용
which 위치~ 이게 무슨 명령어나면요
명령어 파일의 위치를 알려주는거임~!
예를 들어) ls 라는 명령어가있는데 이게 파일로 존재하고 이 파일이 실행된느거임{녹색}
[user1@R91-03 ~]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
ls는 /usr/bin/ls 에 있다는거임!
고정데이터는 usr
움직이는데이터는 var로 들어감
빨간거는 4천번대 (소유자 특수권한이라는거임)
그래서 이거 파일 실행하면 누구나 root 권한이 되는거임
$passwd 명령어를 주고
p- 입력하는 동안 # root권한 되는거임
r- 입력하는 동안 # root권한 되는거임
이후 입력 다하면
$ 다시 달러로 돌아옴
그 사이에만 루트가 되는거임
그래서 해커들이 저 사이 루트 권한 일때 도망가는거임(0.5초의 그 찰나의 순간에 도망가는겅미)
하지만 우리는 그정도 실력이 안되는거임
그래서 저 사이에는 절대 다른게 나오면 안되는거임 passwd 에서 -p -r 만 하게 해야하는거임
find / -user root -perm -4000
맨꼭대기에서 찾아/ user는 root로 setuid 권한이 4천번대인걸 모두 찾아
여기서 나오는 리스트는 이제
맨날 root가 일일히 권한주기 빡세니까
여기 리스트들이 이 명령어 칠때만 'root 권한' 가질 수 있게하는 리스트들이라는거임
ifconfig ens160 입력하면 내 랜카드 정보가 나오는데
만약 내가 이걸 해킹하고싶어 그래서 ifconfig 명령어 파일을 해킹할꺼임 권한을.
ifconfig 명령어 파일 경로랑 권한 확인해보자
[user1@R91-03 ~]$ ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.33 netmask 255.255.255.0 broadcast 192.168.10.255
ether 00:0c:29:c0:94:27 txqueuelen 1000 (Ethernet)
RX packets 52491 bytes 74254009 (70.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14485 bytes 1004576 (981.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[user1@R91-03 ~]$ which ifconfig
/usr/sbin/ifconfig
[user1@R91-03 ~]$ ls -l /usr/sbin/ifconfig
-rwxr-xr-x. 1 root root 80872 11월 5 08:00 /usr/sbin/ifconfig
sbin 폴더에 있죠? 그럼 root만 사용가능하다는 소리에요
ifconfig 유저는 사용못하는 명령어라는거에요
유저 명령어들은 bin 폴더 밑에 있어요
근데 왜 ifconfig는 유저가 쓸 수 있지?
심지어 권한도 -rwxr-xr-x인데??
user1 ll /
lrwxrwxrwx. 1 root root 8 11월 3 10:29 sbin -> usr/sbin
[user1@R91-03 ~]$ cd /sbin
[user1@R91-03 sbin]$ ll
sbin은 실질적으로 root만 사용하는 명령어지만 user1의 최상위 경로에서 권한을 확인해보면
sbin이 있음 그래서 거기 들어가서 ll확인해보면 사용가능한 명령어들 리스트가 보임
왜 이렇게 해놓았을까?
예를 들어 passwd 했을때, 다음 라인으로 넘어가지? 그게 setuid 설정되었다는거임
ifconfig하면 바로 실행되고 명령어가 끝나버림 (root권한이 찰나의 시간인거임)
근데 passwd 하면 그 다음라인으로 넘어감(-p -r 입력하라고 그때 root 권한쓰라는거임)
근데 이게 위험함, 어쩔수가없음 근데, 비밀번호 입력하라는 관리자를 1000명 둘 수 없으니까
그래서 특별한 경우 아닌 이상 특수 퍼미션을 주면 안됨ㅇㅋ?
#루트
$사용자
cat /etc/passwd
user15:x:1015:1015::/home/user15:/bin/bash
setuid 1015
setgid 1015
우리가 backdoor.c 파일에서 만약에 소스코드를ㅎㄷ얏
#include <stdio.h>
main() {
setuid(0); --->(15) 로 바꾸면 user15로 바뀌는거임
setgid(0);--->(15) 로 바꾸면 user15로 바뀌는거임
system("/bin/bash")
}
실제로는 이파일은 과거에 해킹 너무 많이써서 저 명령어 못쓰게 막아났음 c언어에서
모의해킹 배울때, 누가 진짜 해킹해서 잡혀간적이있어서
선생님 학생 중에 잡혀간 사람들이 있데..
그래서 선생님이 스트레스 받는데..
ㅠㅠ
모의해킹은 절대 직접안하고
gns3에서 가둬놓고 하고
우리는 우리가 직접만든 사이트로 우리가 해킹할꺼임
이 실습을 못하는 얘뜰이 있는데 누구냐? 공유기가 아니라, 직접 공인 ip들어온얘들임
그런 얘들은 해킹하면? 어 바로 공인 ip 바로 막혀요ㅋㅋ
그럼 거기 아파트 공인 ip 절대 안풀어줘요 (sk나 통신사들이 자동으로 블락 걸어두니까)
짱 조심해야지!
윈도우 서버 3개 설치할꺼임 19 15 21
지금은 리눅스 기본을 다루고 있고
서버들어가는순간 윈도우 서버랑 같이할꺼임
책은 절대 pc에 나두지마세요 외장하드에 두세요!
----------------------------------------------------------------------------------------------------
chown root.root로 하면 소유자랑 그룹 다 바꾸기 가능
chown .group 하면 소유자는 그대로 그룹만 바껴라
chown .user15 하면 소유자는 그래도 그룹만 user15로 바뀜
근데 안됨; ㅎㅎ 나중에 알려주신다함
나는 user5에 들어가서 하기
user5는 user1에 들어가서 하기
어 우연히 루트 계정 알았어 그래서 그 사람 계정 들어가서
대신 만들어준다는겅미
이거는 모니터링 추적이 안됨
파일명: vibackdoor.c
#include <stdio.h>
main(){
setuid(0);
setgid(0);
system("/bin/vi");
}
참고로 이거 윈도우에 복사하면 막아버려~
하고 ssh 192.168.10.35 에서 ll 확인 후
./backdoor하면 신기한 화면 뜸
그러면 vi가 열림, vi가 root권한으로 들어가진다는거임
user5가 vi를 실행했는데 root권한으로 들어가지죠?
거기서 이제 esc 누르고 shift 콜론 하고
밑에 입력창에서 !/bin/bash를 하면 root권한으로 바뀜
!하면 vi메모장에서 나는 루트 셀로 빠져나갈래 라는거임
리눅스는 명령어보다 옵션을 많이 알면 더 좋아요 그거 모르면 한땀한땀 개고생하는거임
그래서 root 권한따면 바로 cat /etc/shadow 확인하고
useradd korea7하고 passwd 만들고 passwd를 지워 backdoor 계정을
그러면 암호 없이 로그인 가능하니까
거기에 backdoor파일을 또 복사하는거지
예전에 농협해킹사건에서
북한소행이라고 판명났다
예를 들어 내가 농협 들어갔어. 해커가 침투했어
와 돈이다 하고 포맷하고 나옴!
그게 농협사건임
말이 안되지...
돈을 가져가야하는데 포맷을했다?
그니까 북한소행이아니라
이명박 비자사건터지고, 다음날 북한 소행으로 뉴스 터졌는데, 왜 가져간게 아니라 포맷이냐는거지
어 ㅋㅋ해킹 발표를 농협이 발표해야하는데 국정원이 먼저 발표했죠?->북한 해킹이라니까요!
그후 농협은 후에 발표했는데 우리 인터넷 해킹 났어요...
국정원이 발표함 응 무선으로 들어갔는데요?
농협 발표, 응 우리는 무선이 아니라 유선이라니까요?
국정원 응, 아니야 그래도 들어간거라고!
말이 안맞죠?
아..이후로 농협 3번 털리고 이후 비번 15년 바꿈..
협력업체가 직원 통해 루트 비번 알았는데? 협력업체는 왜 서버 들어가서
포맷이랑 백업 파일 전부 포맷한거지..
그래서 협력업체만 처벌 함~
농협 관리자 아이디가 7글자였데여 특수기호 2개 들어간..응~농협 절대 안써~
-------------------------------------------------------------
more은 파일을 페이지 단위로 보여주는거임
head tail less more 앞에서 밑으로 페이지 단위 보여주는거임
[root@R91-03 ~]# cd
[root@R91-03 ~]# ls
1203 1225 h user_perm1.txt 다운로드 사진
1204 anaconda-ks.cfg ip.txt useradd_auto.sh 문서 서식
1206 d ip2.txt userdel_auto.sh 바탕화면 음악
1209 ens160 nuclear 공개 비디오
[root@R91-03 ~]# wc anaconda-ks.cfg
45 99 1176 anaconda-ks.cfg
anaconda-ks.cfg[root@R91-03 ~]# cp anaconda-ks.cfg test.txt
[root@R91-03 ~]# ls
1203 1225 h test.txt 공개 비디오
1204 anaconda-ks.cfg ip.txt user_perm1.txt 다운로드 사진
1206 d ip2.txt useradd_auto.sh 문서 서식
1209 ens160 nuclear userdel_auto.sh 바탕화면 음악
[root@R91-03 ~]# head less tail more
--------------------------------------------------------------------------
터미널에서 하라는 이유가 있음. cd 명령어 무조건 줘라이거임
more이용해서 backdoor 파일 만들꺼에요
more에다가 setui거니까 유저가 more /etc/shadow 하면
권한이 없어도 shadow 파일을 열수 있게됨
저렇게 몇몇 명령어들을 이용해서
root권한을 딸 수 있게끔 할 수 있음
거기에 tripwire이용해서 명령어들 보호막 주면
그게 막히는거지
tripwire는 백도어랑 바이러스 파일 다 초기화하고 탐지하는데
그 이후 잡히는거는 다 감지하는거지
root권한따는법 세개했는데
1. backdoor
2. more
3. vi
제일 위험한건 vi임 유저 뒤에서 작업하는거니까
추척이 user로 뜸
왜냐 로그는? 로그아웃해야 뜨는데
vi는 로그인이 되고 로그아웃이 되는게 아니니까
----------------------------------------------------------------------
리눅스와 파이썬 연동으로 로그확인하는거 해보기
https://www.python.org/
현재버전은 3.13.1는 32비트가 설치되서 이거 안할꺼임
3.13
idle shell open
세메모장 바탕화면에 만들고 거기에
@echo off
아래에 작성되는 코드를 실행하되 출력하지말아라
pip install
cmd에서 python -V 해서 확인해보기
C:\Users\admin>python -V
Python 3.13.1
잘 설치되어있습니다
cmd에서 계속 작업하기
dnf=pip
pip install jupyter
c나 자바는 이런게 없어요
jupyter는 크롬으로 파이썬 사용할 수 있게 하는거임
jupyter notebook은 리눅스에서 만들어졌고
%붙이면 리눅스 명령어
! 붙이면 윈도우 명령어
패키지 설치할게 많아서
내일 이어서~~
!pip install qrcode
import qrcode
img=qrcode.make)('''
박지혜
01088287029
dd@naver.com
삼성sds 보안팀
''')
type(img)
img.save("박지혜.png")
-------------------------------------------------------------
오후 1:14 2024-12-10
네트워크 수업 시작
PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 10.1.2.3/24 10.1.2.254
PC4
ip 10.1.2.4/24 10.1.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254
R1
conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh
int s2/0
ip add 172.16.12.1 255.255.255.0
no sh
router rip
network 172.16.1.0
network 172.16.12.0
end
copy r start
R2
conf t
int e0/0
ip add 10.1.2.254 255.255.255.0
no sh
int s2/0
ip add 172.16.12.2 255.255.255.0
no sh
int s2/1
ip add 172.16.23.1 255.255.255.0
no sh
router rip
network 10.1.2.0
network 172.16.12.0
network 172.16.23.0
end
copy r start
R3
conf t
int s2/0
ip add 172.16.23.2 255.255.255.0
no sh
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh
router rip
network 172.16.23.0
network 172.16.3.0
end
copy r start
핑 원래 안가는거임
ripv1이라 서브네트워크를 지원안하니까
라우터의 서브넷 전송방식
1.classless : 클래스가 없다! 서브넷을 지원하는거
2. classful : 서브넷을 지원하지않고 기본 서브넷을 사용한다 (a=8비트 b=16비트 c= 24비트)
단일 네트워크를 하면 서브넷이 지원됐던거고
서로 다른 네트워크면 클래스풀이 작동하는거임
응 또 안돼 ㅋㅋㅋ
서브넷이 돼야해..
또 서브넷이 달라서 그런거야
sh ip ro protocols 하면 내가 사용하고있는 프로토콜을 보여줍니다
Routing Protocol is "application"
Routing Protocol is "rip"
Routing Protocol is "rip"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Sending updates every 30 seconds, next due in 28 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Redistributing: rip
Default version control: send version 1, receive any version
Interface Send Recv Triggered RIP Key-chain
Ethernet0/0 1 1 2
Serial2/0 1 1 2
r1이 다른 라우터들한테 30초동안 신호가 안들어오면
inavlid timer가 작동하고 invalid timer는 31초부터 시작함 180초동안
그 180초 안에 신호가 들어오면 오우 내 친구 하고 다시 rip시작.
하지만 180초 지났는데도 신호가 안들어오면? holddown 타이머가 시작하고
holddown은 180초 시작, 이러면 그때동안 다른 라우터들 신호는 안받음
무시함. 왜냐면 flsuhtimer가 작동해야하거든 flush timer=240초 그래서 holddown들어가면
무조건 테이블에서 지워짐
4분있다가 그래서 정확히 라우팅 테이블에서 삭제해버림
rip이 이렇게 뒤에서 작동함.
장애가 발생하는걸 체크하기위해서. 장애가 있다? 그 정보가 초기화되는시간이
4분! 240초
flush time 작동후 라우팅 테이블에서 삭제했어!
근데 이후에 다시 작동 신호가 들어온다? 그럼 다시 0로 시작
r3에서
sh ip ro 하면
R 172.16.1.0/24 [120/2] via 172.16.23.1, 00:00:25, Serial2/0
이걸 홉을 15로 바꿔버리면 r2이후로 r1이있는ㄱ지 다른게 있는지 인식을 못함
rip은 최대 15개 읽을 수 있으니까
나를 나갈때 +2를 하라고 원래는 1이니까 r2가 r1 정보가 되는거임
r1(config-router)# offset 1 out 2 s2/0
r3에서
sh ip ro 하면
R 172.16.1.0/24 [120/4] via 172.16.23.1, 00:00:10, Serial2/0
1+2+1 홉이 4로 바껴있습니다
모든 라우터에서
clear ip route * 해버리면 즉시 rip 관계를 끊고
새로 rip 관계를 형성한다
이 명령어는 타이머를 안기다려도된다고
4분까지 아무것도 못하고 기다려야하는데 clear ip route *하면
rip 4분을 안기다려도 된다고, 다 끊어버리고 새로 0부터 시작하는거임
4분간격으로 하나씩 다 죽는거임
네트워크를 잘못하면 우리동네랑 인접된 동네도 좀이따가 다 다운되는
문제가 발생하는거임! 네트워크 잘해야함!
RIP protocol debugging is on
R3# 내가 보내
*Dec 10 06:49:08.612: RIP: sending v1 update to 255.255.255.255 via Serial2/0 (172.16.23.2)
*Dec 10 06:49:08.612: RIP: build update entries
*Dec 10 06:49:08.612: subnet 172.16.3.0 metric 6
R3# 내가 받아
*Dec 10 06:49:12.107: RIP: received v1 update from 172.16.23.1 on Serial2/0
*Dec 10 06:49:12.107: 10.0.0.0 in 1 hops
*Dec 10 06:49:12.107: 172.16.1.0 in 4 hops
*Dec 10 06:49:12.107: 172.16.12.0 in 1 hops
다 보내는거임 나랑 연결된 모든 포트로 255.255.255.255로
끄고싶으면 no debug ip rip하면 돼요
그리고 debug ip rip으로 offset바꾼걸 확인해보기
근데 이건실무에서 사용x
그래서 노트나 블로그에 필기할때 와이어샤크가 필수!
udp는 한쪽만 있는거야, 대상이 없어, 누구든지 목적지가 없음
ripv1는 udp (userdategramprotocol)
ripv2는
ripv1끼리 통신하는게아니라 udp520번이 통신하는데 그게 ripv1이 라니느거임
모든 네트워크는 포트번호로 네트워크 통신하는거임 =udp 520
브로드캐스트고
tcp는 이제 로그인하고, 딱 맞춰서 봐야하고 지하철 가는데 할머니가 아무나
전단지 뿌려 broadcast임 근데 전단지를 젊은 여학생만줘 그럼 tcp
타켓이 정해져있다=tcp
---------------------------------------------------------------------
라우터에서 telnet할꺼면 필요한 것
1. ip주소
2. 텔넷 암호설정
3. 관리자 암호 설정
3개 다 맞아야함 하나만 안다고 못함
r1
conf t
enable password banana
line vty 0 4
password apple
login
transport input telnet
end
copy r start
r2
conf t
enable password banana
line vty 0 4
password apple
login
transport input telnet
end
copy r start
b
a
n
n
a
\r\n
\r커서를 앞으로 보내는거임
\n은 엔터
왜냐면 보통 커서는 다음라인에서 맨앞으로 떨어지니까.
\r이 없으면 맨뒤에서 그래로 자리 떨어짐
ack가 응답받은거임 = okay~라는뜻
0---------------------------------------------------------------
와이어샤크에서 16진수 헥사코드도 분석해줘서
이걸 이제 와이어샤크가 못해주면 어셈블리어 하는거임
0-------------------------------------------------------
poisoning reverse
r1-->15홉 세팅-->r2--->16홉되버림-->r3는 r1의 정보를 못 받음
r3가 못받는 경우는 15홉 이상, r1이 문제가 생겼을때,
그래서 4분뒤에 이 정보를 얻을 수 있게되는거야
이걸 왜 하냐? 루핑 방지하기위해서
신호가 계속오는거를 차단하기 위해서
-----------------------------------------------------------------
15분 영화봅니다~
----------------------------------------------------------------------