-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path36_enum_shell_commands.sh
More file actions
193 lines (167 loc) · 11.3 KB
/
Copy path36_enum_shell_commands.sh
File metadata and controls
193 lines (167 loc) · 11.3 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#!/system/bin/sh
# DROID FORENSIC - Shell Commands Enumeration
# Collects available shell commands, binaries, and their permissions
# Usage: sh 36_enum_shell_commands.sh [output_directory]
OUTPUT_DIR="${1:-.}"
OUTPUT_FILE="${OUTPUT_DIR}/shell_commands.txt"
echo "[*] Enumerating available shell commands..."
{
echo "═══════════════════════════════════════════════════════════════"
echo " SHELL COMMANDS ENUMERATION"
echo " Timestamp: $(date)"
echo "═══════════════════════════════════════════════════════════════"
echo ""
# Environment
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ ENVIRONMENT VARIABLES │"
echo "└─────────────────────────────────────────────────────────────┘"
env 2>/dev/null || printenv 2>/dev/null
echo ""
# PATH
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ PATH VARIABLE │"
echo "└─────────────────────────────────────────────────────────────┘"
echo "PATH=$PATH"
echo ""
echo "Parsed PATH directories:"
echo "$PATH" | tr ':' '\n' | while read dir; do
if [ -d "$dir" ]; then
count=$(ls -1 "$dir" 2>/dev/null | wc -l)
echo " [EXISTS] $dir ($count files)"
else
echo " [MISSING] $dir"
fi
done
echo ""
# /system/bin
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ /system/bin CONTENTS │"
echo "└─────────────────────────────────────────────────────────────┘"
ls -la /system/bin/ 2>/dev/null
echo ""
echo "Count: $(ls -1 /system/bin/ 2>/dev/null | wc -l) files"
echo ""
# /system/xbin
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ /system/xbin CONTENTS │"
echo "└─────────────────────────────────────────────────────────────┘"
ls -la /system/xbin/ 2>/dev/null || echo "[/system/xbin not present]"
echo ""
# /vendor/bin
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ /vendor/bin CONTENTS │"
echo "└─────────────────────────────────────────────────────────────┘"
ls -la /vendor/bin/ 2>/dev/null || echo "[/vendor/bin not present]"
echo ""
# /sbin
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ /sbin CONTENTS │"
echo "└─────────────────────────────────────────────────────────────┘"
ls -la /sbin/ 2>/dev/null || echo "[/sbin not accessible]"
echo ""
# /product/bin
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ /product/bin CONTENTS │"
echo "└─────────────────────────────────────────────────────────────┘"
ls -la /product/bin/ 2>/dev/null || echo "[/product/bin not present]"
echo ""
# /apex binaries
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ APEX BINARIES (/apex/*/bin) │"
echo "└─────────────────────────────────────────────────────────────┘"
for apex_bin in /apex/*/bin; do
if [ -d "$apex_bin" ]; then
echo "--- $apex_bin ---"
ls -la "$apex_bin" 2>/dev/null | head -20
echo ""
fi
done
echo ""
# Toybox applets
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ TOYBOX APPLETS │"
echo "└─────────────────────────────────────────────────────────────┘"
toybox 2>/dev/null || echo "[toybox not available]"
echo ""
echo "Toybox location and info:"
which toybox 2>/dev/null
ls -la $(which toybox 2>/dev/null) 2>/dev/null
echo ""
# Busybox applets (if present)
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ BUSYBOX APPLETS (if installed) │"
echo "└─────────────────────────────────────────────────────────────┘"
busybox --list 2>/dev/null || busybox 2>/dev/null || echo "[busybox not available]"
echo ""
echo "Busybox locations:"
which busybox 2>/dev/null
ls -la /system/xbin/busybox /system/bin/busybox /data/local/tmp/busybox 2>/dev/null
echo ""
# Shell type
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ SHELL INFORMATION │"
echo "└─────────────────────────────────────────────────────────────┘"
echo "SHELL=$SHELL"
echo "Current shell: $(readlink /proc/$$/exe 2>/dev/null)"
echo ""
ls -la /system/bin/sh /bin/sh 2>/dev/null
echo ""
file /system/bin/sh 2>/dev/null || echo "[file command not available]"
echo ""
# Security-sensitive commands
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ SECURITY-SENSITIVE COMMANDS │"
echo "└─────────────────────────────────────────────────────────────┘"
SENSITIVE_CMDS="su sudo dmesg logcat strace ltrace gdb ptrace tcpdump nc ncat netcat socat curl wget nmap"
for cmd in $SENSITIVE_CMDS; do
location=$(which "$cmd" 2>/dev/null)
if [ -n "$location" ]; then
echo "[FOUND] $cmd: $location"
ls -la "$location" 2>/dev/null | sed 's/^/ /'
else
echo "[NOT FOUND] $cmd"
fi
done
echo ""
# Package manager commands
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ ANDROID PACKAGE MANAGER COMMANDS │"
echo "└─────────────────────────────────────────────────────────────┘"
ANDROID_CMDS="pm cmd am dumpsys settings content service app_process dalvikvm"
for cmd in $ANDROID_CMDS; do
location=$(which "$cmd" 2>/dev/null)
if [ -n "$location" ]; then
echo "[FOUND] $cmd: $location"
ls -la "$location" 2>/dev/null | sed 's/^/ /'
else
echo "[NOT FOUND] $cmd"
fi
done
echo ""
# Debug/development commands
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ DEBUG/DEVELOPMENT COMMANDS │"
echo "└─────────────────────────────────────────────────────────────┘"
DEBUG_CMDS="debuggerd crash_dump tombstoned perfetto simpleperf atrace"
for cmd in $DEBUG_CMDS; do
location=$(which "$cmd" 2>/dev/null)
if [ -n "$location" ]; then
echo "[FOUND] $cmd: $location"
ls -la "$location" 2>/dev/null | sed 's/^/ /'
fi
done
echo ""
# Commands with SUID bit
echo "┌─────────────────────────────────────────────────────────────┐"
echo "│ SUID COMMANDS IN PATH │"
echo "└─────────────────────────────────────────────────────────────┘"
echo "$PATH" | tr ':' '\n' | while read dir; do
if [ -d "$dir" ]; then
find "$dir" -perm -4000 -type f 2>/dev/null | while read f; do
ls -la "$f"
done
fi
done
echo ""
} > "${OUTPUT_FILE}" 2>&1
echo "[+] Shell commands enumeration saved to: ${OUTPUT_FILE}"