number parts, please
If and when available (desktop use), please use the schematic editor. It numbers parts. Here's the schematic from your notebook (glad to see you using one!):
![schematic](https://cdn.statically.io/img/i.sstatic.net/SxNdG.png)
simulate this circuit – Schematic created using CircuitLab
schematic simplification
We know that \$V_3=V_a\$ here but it looks a bit messy with all those wires. So let's get rid of them:
![schematic](https://cdn.statically.io/img/i.sstatic.net/gboLE.png)
simulate this circuit
\$V_2\$ is gone. Nice.
without any stimulus
However, as it stands the best solution would be to set all the voltages to zero. As you correctly noted:
I understand that the Thévenin voltage is zero because there are only
dependent sources
adding a stimulus
To handle this, inject \$1\:\text{A}\$ into node \$V_3\$ to see how it responds. The developed KCL must include this injected current. (The use of \$1\:\text{A}\$ is just to simplify the result. Any non-zero current would work as well.)
The KCL equations are then:
$$\begin{align*}
\frac{V_1}{R_1}+\frac{V_1}{R_2}+\frac{V_1}{R_5}&=\frac{2\cdot\left(V_3-V_1\right)}{R_2}+\frac{V_3}{R_5}
\\\\
\frac{V_3}{R_3}+\frac{V_3}{R_4}+\frac{V_3}{R_5}&=\frac{2\cdot\left(V_3-V_1\right)}{R_3}+\frac{V_1}{R_5}+1\:\text{A}
\end{align*}$$
Using SymPy (Python and SageMath):
e1 = Eq( v1/r1 + v1/r2 + v1/r5, 2*(v3-v1)/r2 + v3/r5 ) # KCL for V1
e3 = Eq( v3/r3 + v3/r4 + v3/r5, 2*(v3-v1)/r3 + v1/r5 + i1 ) # KCL for V3
for i,j in solve([e1,e3],[v1,v3]).items():i,j.subs({r1:1,r2:2,r3:1,r4:2,r5:1,i1:1})
(v1, 8/15)
(v3, 14/15)
And done. We find that \$V_{_\text{TH}}=\frac{V_3}{1\:\text{A}}=\frac{14}{15}\:\Omega\$.
You can keep \$V_2\$, of course. In this case,
e1 = Eq( v1/r1 + v1/r2 + v1/r5, v2/r2 + v3/r5 ) # KCL for V1
e2 = Eq( v2, 2*(v3-v1) ) # Equiv. for V2
e3 = Eq( v3/r3 + v3/r4 + v3/r5, v2/r3 + v1/r5 + i1 ) # KCL for V3
for i,j in solve([e1,e2,e3],[v1,v2,v3]).items():i,j.subs({r1:1,r2:2,r3:1,r4:2,r5:1,i1:1})
(v1, 8/15)
(v2, 4/5)
(v3, 14/15)
A little more information. But no actual change.
verification
It never hurts to verify:
![enter image description here](https://cdn.statically.io/img/i.sstatic.net/pnQNd.png)
final notes
There's no necessary need to inject \$1\:\text{A}\$. Any value is fine. Here, I inject \$25\:\text{mA}\$, instead:
e1 = Eq( v1/r1 + v1/r2 + v1/r5, v2/r2 + v3/r5 ) # KCL for V1
e2 = Eq( v2, 2*(v3-v1) ) # Equiv. for V2
e3 = Eq( v3/r3 + v3/r4 + v3/r5, v2/r3 + v1/r5 + i1 ) # KCL for V3
for i,j in solve([e1,e2,e3],[v1,v2,v3]).items():i,(j/i1).subs({r1:1,r2:2,r3:1,r4:2,r5:1,i1:0.025})
(v1, 0.533333333333333)
(v2, 0.800000000000000)
(v3, 0.933333333333333)
The result is the same. The point is that something needs to be injected so that you can work out (from the injection) what the Thevenin resistance is.
The basic idea remains.