Lab 1
Lab 1
Lab 1
Group: 17
GROUP 17 1
2
Linux Capability Exploration Lab
Install Libcap
Hình 1
Hình 2
Hình 3
GROUP 17 2
3
Linux Capability Exploration Lab
Hình 4
GROUP 17 3
4
Linux Capability Exploration Lab
Hình 5
GROUP 17 4
5
Linux Capability Exploration Lab
Hình 6
GROUP 17 5
6
Linux Capability Exploration Lab
Hình 7
- Now, we turn /bin/ping into a non-Set-UID program. This can be done via the following command
(you need to login as the root):
# chmod u-s /bin/ping.
Hình 8
GROUP 17 6
7
Linux Capability Exploration Lab
Hình 9
Hình 10
Question 1: Please turn the following Set-UID programs into non-Set-UID programs,
without affecting the behaviors of these programs.
• /usr/bin/passwd
Hình 11
Question 2: You have seen what we can do with the cap net raw capability. We would like
you to get familiar with several other capabilities. For each of the following capabilities, do
the following: (1) explain the purpose of this capability; (2) find a program to demonstrate
the effect of these capabilities (you can run the application with and without the capability,
and explain the difference in the results). You can also write your own applications if you
prefer, as long as they can demonstrate the effect of the capability. Here is the list of
capabilities that you need to work on (read include/linux/capability.h to learn about the
capabilities).
• cap dac read search
GROUP 17 7
8
Linux Capability Exploration Lab
Hình 12
Hình 13
1) cap_dac_read_search: Bypass file read permission checks and directory read and
execute permission checks. After enable this capability, it can run any program that without
read permission.
Hình 14
Hình 15
GROUP 17 8
9
Linux Capability Exploration Lab
Hình 16
To test this command, I change captest.c to 000, when we run it as normal user, it shows
permission denied. After that I setcap cap_dac_read_search to read command ‘cat’, then run
it again, surprisingly, we can read the content of the program. Therefore,
cap_dac_read_search really do bypass the read permission, it can run any program that
without read permission.
2) cap_dac_override: Bypass file read, write, and execute permission checks. (DAC is an
abbreviation of "discretionary access control"). In first example, I am trying to read the
content of captest.c.
Hình 17
First remove the capability that appeared in previous test, try to read the program, we found
that permission denied, then enable cap_dac_override capability to read permission ’cat’,
then we can successfully read the program.
GROUP 17 9
10
Linux Capability Exploration Lab
Another example is bypassing edit or write permission after we enable the capability of
cap_dac_override. Before enable this capability, when we type “vi shadow”, we cannot even
open the /etc/shadow file.
Hình 18
The following code is we enable the capability on “vi” command, and then try to open it.
Hình 19
The following screenshot is the result, we successfully opened the file, and you can
insert any sentence in this file.
GROUP 17 10
11
Linux Capability Exploration Lab
Hình 20
Hình 21
From above screenshot, first we remove the capability set by previous test, then intent to
change the owner of the file captest.c from root to seed, it turns out that Operation not
permitted, then we set cat_chown capability to the command ‘chown’, after that, we do
chown command again, it successfully change the owner of the file to seed.
GROUP 17 11
12
Linux Capability Exploration Lab
4) cap_setuid: make forged UID when passing socket credentials via UNIX domain
sockets.
First we create a file name sidcontent which contents the sentence that going to show out .
Then create the program which will forge a uid when passing socket.
Hình 22
Hình 23
Then create the program which will forge a uid when passing socket. The program
named sid.c
Hình 24
Then we set the content program sidcontent to no read permission for others, then do cat
sidcontent, we can see from below picture, it shows permission denied. Then we go to
compile the sid.c program and run it, it also says permission denied.
GROUP 17 12
13
Linux Capability Exploration Lab
Hình 25
After we setcap cap_setuid to ./sid, then run it , it successfully run the program by showing
out the content in sidcontent file.
5) cap_kill: Bypass permission checks for sending signals . In this task, I run top on other
terminal in root permission, and then use seed try to kill the process, but as we observed in
the following screenshot, it shows operation not permitted, then we setcap cap_kill
capability to kill, and run it again, it finally successfully kill the process.
GROUP 17 13
14
Linux Capability Exploration Lab
Hình 26
6) cap_net_raw: Enable normal user to use RAW and PACKET sockets.In this example,
we first check whether ping has any capability, it shows it has one then we remove it, and
run ping, it show permission denied, then we setcap cap_net_raw to ping , and run it again,
it works !
Hình 27
GROUP 17 14
15
Linux Capability Exploration Lab
Hình 28
Hình 29
GROUP 17 15
16
Linux Capability Exploration Lab
Hình 30
GROUP 17 16
17
Linux Capability Exploration Lab
Hình 31
Hình 32
GROUP 17 17
18
Linux Capability Exploration Lab
Hình 33
Hình 34
GROUP 17 18
19
Linux Capability Exploration Lab
Hình 35
Hình 36
Question 3:
Compile use_cap.c
GROUP 17 19
20
Linux Capability Exploration Lab
Hình 37
Assign the cap_dac_read_search capability to the executable file ” ./use_cap”. And login as
normal user, run the program
Hình 38
Answer: ACL is a list of access control entry, which give access permission to a user or
group on a given file or folder. In ACL, if we want to grant permission to other
user/group, we always need to login as root or superuser, and use “chmod” command
to grand permission on file to the aimed user. While by using capabilities, we can bypass
some permission check, even if we were not supposed to have permission on accessing
this file. It is more convenient for normal user since you do not need to ask access
permission from root, but it is more danger.
GROUP 17 20
21
Linux Capability Exploration Lab
the capability A? What if the process deleted the capability, can the attacker uses the
capability?
Answer: Yes. After normal user disables a capability A, the attacker can still use the
capability A by enabling it in his malicious code, but if the process deleted the
capability, the attacker cannot use the capability.
Question6: The same as the previous question, except replacing the buffer-overflow
attack with the race condition attack, Namely, if the attacker exploits the race condition
in this program, can he use the capability A if the capability is disabled? What if the
capability is deleted?
Answer: If the attacker exploits the race condition in this program, he can still use the
capability A no matter the capability is disabled or deleted. That is because the
malicious code will always run before the capability statement in the race condition
attack.
GROUP 17 21